使用一个按钮一个接一个地调用两个js函数

问题描述:

这里是我的代码,不工作请帮助我想用一个提交按钮调用两个js函数。我尝试了下面的代码。但它给出了错误。使用一个按钮一个接一个地调用两个js函数

function scrollWin() { 
 

 
    // First time click 
 
    if (e.name != 'Click') { 
 
     e.name = "Click"; 
 

 
     function scrollWin() { 
 
      window.scrollBy(0, 85); 
 
     } 
 
    } 
 

 
    // When click it again.. 
 
    else if (e.name == 'Click') { 
 
     e.name = "Unclick"; 
 

 
     function myFunction() { 
 
      document.getElementById("demo").innerHTML = "<h2> Second Click </h2>"; 
 
     } 
 
    } 
 
}
<input type="button" onclick="scrollWin(); this.style.visibility= 'hidden'; 
 
myFunction()" value="Click Me" /> 
 

 
<p id="demo"></p>

+1

什么是错误?从代码中不明显你想要完成什么。并且命名两个不同的功能同样的事情只是要求混淆。如果你想调用两个函数,那么你只需要调用一个接一个的函数。 'functionOne(); functionTwo();'什么问题? – David

您需要定义一个函数处理这个动作。在可以保存点击状态的地方最好存储一个变量。这里有一个例子:

var clickCount = 0; 
 

 
function scrollWin(button) { 
 
    // first click 
 
    if (clickCount === 0) { 
 
     window.scrollBy(0, 85); 
 
    } 
 
    // second or more click 
 
    else { 
 
     document.getElementById("demo").innerHTML = "<h2> Second Click </h2>"; 
 
     button.style.display = 'none'; 
 
    } 
 
    clickCount++; 
 
}
<input type="button" onclick="scrollWin(this)" value="Click Me" /> 
 

 
<p id="demo"></p>

+0

@AmitTiwari我改编了它。我现在将该按钮作为参数传递,然后再次单击设置样式属性。 –

你需要打好基础。函数调用将有其自己的作用域,并且一旦函数的作用域结束,变量就会被销毁。我想你想捕获元素的第二次点击。

不要尝试声明一个全局变量,但尝试在第一次单击时设置elements属性,您可以在第二次单击时访问它。在点击后读取该属性,然后进行操作。

我建议你呼的一下事件作为

onclick="click123(this);" 

,并使用它来设置使用setAttribute

我觉得这个完成你所描述的属性。你需要通过点击按钮并阅读按钮文本,但e.name可能不会工作,你需要使用innerHTMLtextContent。然后,您可以执行操作或调用您希望执行的功能,具体取决于第二次点击后更改的按钮文本。

  function scrollWin(e) { 
 

 
      //First time click 
 
      if(e.textContent != 'Click'){ 
 
       e.textContent = "Click"; 
 
       window.scrollBy(0, 85); 
 
      } 
 

 
      else if(e.textContent == 'Click'){ 
 
       e.textContent = "Unclick"; 
 
       document.getElementById("demo").innerHTML = "<h2> Second Click </h2>"; 
 
      }//end else 
 
     }//end function
<button onclick="scrollWin(this)">Click</button> 
 
<div id="demo"></div>

我明白你想在同一个按钮,但在两个不同的条件下执行两个操作,如果要执行保持状态,并根据该再执行操作。像:

function scrollWin(e) { 
    var btn = e.target; 

    var state = btn.dataset.myattr; 

    if(state == 'state1'){ 
     btn.dataset.myattr = 'state2'; 
     e.name = "Click"; 
     window.scrollBy(0, 85); 
    }else if (state == 'state2'){ 
     btn.dataset.myattr = 'state1'; 
     e.name = "Unclick"; 
     document.getElementById("demo").innerHTML = "<h2> Second Click </h2>"; 
    } 
} 

如果要更改名称属性别的东西,你可以做到这一点,你没有改变JS代码为。

+0

是的,在else块中添加代码来隐藏元素。使用样式属性,如:btn.style.display ='none';请求您将其标记为答案并放弃投票。谢谢 – DASH

+0

如果你指的是我的答案,记得给'state1'作为默认状态按钮。你可以在html的button标签中使用data-myattr ='state1'。 – DASH

+0

是的,你也可以在这里做的,在else块中只是写代码来隐藏它btn.style.display ='none';如果我的回答是不正确的,至少给我upvote。谢谢 – DASH