2017-02-10 224 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