2017-06-03 90 views
-3

這裏是我的代碼,不工作請幫助我想用一個提交按鈕調用兩個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

回答

0

您需要定義一個函數處理這個動作。在可以保存點擊狀態的地方最好存儲一個變量。這裏有一個例子:

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我改編了它。我現在將該按鈕作爲參數傳遞,然後再次單擊設置樣式屬性。 –

0

你需要打好基礎。函數調用將有其自己的作用域,並且一旦函數的作用域結束,變量就會被銷燬。我想你想捕獲元素的第二次點擊。

不要嘗試聲明一個全局變量,但嘗試在第一次單擊時設置elements屬性,您可以在第二次單擊時訪問它。在點擊後讀取該屬性,然後進行操作。

我建議你呼的一下事件作爲

onclick="click123(this);" 

,並使用它來設置使用setAttribute

0

我覺得這個完成你所描述的屬性。你需要通過點擊按鈕並閱讀按鈕文本,但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>

0

我明白你想在同一個按鈕,但在兩個不同的條件下執行兩個操作,如果要執行保持狀態,並根據該再執行操作。像:

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

相關問題