2017-02-10 273 views
0

我試圖讓按鈕改變文本onclick,同時它也打開菜單。菜單正在工作,正在打開onclick,但按鈕上的文字不是。更改文本onclick按鈕

是否可以通過打開菜單的部件進行故障排除? 我找不到爲什麼它不工作。

按鈕

<button type="button" id="showRight" onClick="click()">Tools</button> 

腳本:

<script> 
    var menuLeft = document.getElementById('cbp-spmenu-s1'), 
     menuRight = document.getElementById('cbp-spmenu-s2'), 
     menuTop = document.getElementById('cbp-spmenu-s3'), 
     menuBottom = document.getElementById('cbp-spmenu-s4'), 
     showRight = document.getElementById('showRight'), 
     body = document.body; 

    showRight.onclick = function() { 
     classie.toggle(this, 'active'); 
     classie.toggle(menuRight, 'cbp-spmenu-open'); 
    }; 

    function click() 
    { 
     var change = document.getElementById("showRight"); 
     if (change.value == "Tools") 
     { 
      change.value = "X"; 
     } 
     else 
     { 
      change.value = "Tools"; 
     } 
    } 
</script> 
+1

並且'classie'永遠不會被定義 – epascarello

+0

添加了現在的腳本行 – marijn

+1

爲什麼要在同一個元素上的同一個事件上調用兩個不同的函數,兩種不同的方式? – eeetee

回答

1

這不是change.value它是change.textContentchange.innerText如果你願意。

+0

謝謝,我結合了這兩個函數和使用textContent代替它現在的工作 – marijn

1

當您添加事件,要覆蓋的內聯點擊屬性。

你應該使用addEventListener

showRight.addEventListener("click", function() {}); 

我個人這兩種方法合二爲一。

0

我相信click是一個關鍵字,不能用於函數名稱。 如果您只是將函數名稱更改爲showRight_click()並更新您的onclick以匹配它就可以。

+0

它可以用作函數名稱。你的猜測是錯誤的。只是自己嘗試一下。 – dfsq

+0

這不是一個猜測。在我發佈一個答案之前,我確實嘗試了它,並且它從來沒有用函數click()激發事件。你需要嘗試一下。 – TRock

+0

:)然後不是一個猜測,而只是缺乏知識。 'click'可以是函數名,這不是問題。它不起作用僅僅是因爲設置爲dom元素屬性「showRight.onclick」的事件覆蓋了使用屬性綁定的事件。 – dfsq