JavaScript事件没有被解雇

问题描述:

一旦#theButton被点击,应该触发一个提醒。为什么没有使用以下方法触发任何事件? 在此先感谢。JavaScript事件没有被解雇

<html> 
    <head> 
     <script type="text/javascript" language="javascript"> 

     var theButton = document.getElementById("theButton"); 

     theButton.onclick = function(){alert("Clicked!");} 
     theButton.onclick = clickAlert; 
     theButton.onclick(alert("Clicked!")); 

     function clickAlert(){ 
     alert("Clicked!"); 
     } 
     </script> 
    </head> 
    <body> 
     <input type="button" id="theButton"> 
    </body> 
    </html> 
+0

注重细节是在编程很重要,缺乏对细节的关注显示了某些缺乏职业精神。拼写错误和错误拼写功能名称表示对细节缺乏关注。此外,您的逻辑有缺陷,您在按钮实际存在之前一遍又一遍地分配相同的内容。 – 2010-06-18 20:45:08

+0

如果你之前写过这样的话,我会一直很好,因为我会从中学到一些东西。但讽刺并没有教导任何东西。 – Babiker 2010-06-18 20:53:10

你有三个问题

  1. 你拼错function第7行(这会产生一个运行时错误,顺便说一句)
  2. 您尝试访问节点#theButton它在DOM可用之前。就拿佩卡的建议为这一个
  3. 您覆盖onclick财产上的8号线 - 不知道,如果你这样做的目的还是什么

因为theButton当你运行你的脚本不存在了吗?

将它包装到body的onload事件或jQuery的ready()中。

+0

jQuery的'ready()'是'DOMContentLoaded'事件的封装,而不是'laod'事件。 – Crozin 2010-06-18 20:48:16

+0

@Crozin我知道,但是IIRC,在浏览器中获得没有jQuery的'DOMContentLoaded'非常困难。尽管如此,你是对的。 – 2010-06-18 20:50:16

+0

你的意思是不存在的? – Babiker 2010-06-18 21:03:15

尝试将其封装在document.Ready()函数中。

+0

这不一定存在 - OP不使用jQuery。 – 2010-06-18 20:41:13

我喜欢jQuery.ready()的答案,但我相信你也可以移动<script>阻止某些点击您在页面末尾处释放按钮。

+0

...或使用'onload'事件。 – 2010-06-18 20:42:54

它的工作原理,如果你把输入标签中的onclick(和拼写正确的事情):

<html> 
    <head> 
     <script type="text/javascript" language="javascript"> 



     function clickAlert(){ 
     alert("Clicked!");  

     } 

     </script> 
    </head> 
    <body> 
     <input type="button" id="theButton" NAME="theButton" onclick="clickAlert()"> 
    </body> 
    </html>