<html>
<head>
<title>onclick</title>
<script type="text/javascript">
function buttonAlert(){
alert("you clicked the button");
//document.getElementById("myButton2").onclick = buttonAlert;
//为什么把这句放外面就无效了,放在这里有效
}
document.getElementById("myButton2").onclick = buttonAlert;
//函数名后不能有括号,否则,就先执行buttonAlert()函数并赋值给onClick
</script>
</head>
<body>
<input type="button" id="myButton1" value="myButton1" onClick="buttonAlert()" />
<input type="button" id="myButton2" value="myButton2" />
</body>
</html>
JS是直译型执行语言,就是按顺序一句一句执行下来,你的js放在了body的前面,浏览器还未渲染好body时你就通过js去找一个id=myButton2的按钮,这是找不到的。找不到还怎么添加属性事件。然后你放在函数内部的时候,当你点击第一个按钮时,html文档已经渲染好了,能找到id=myButton2的按钮,能添加事件。所以有效
因为 你在给btton2 添加 onclick 时 实际先进行的添加方法并没有找到 ID,
只要将 JS部分 放在 body 尾部 或者 在 JS内容上 加上 window.onload=function(){ js 内容 }就可以解决, 是执行顺序的问题
同小白,刚才试了一下,放在外部一样好使啊。
放在外面不是在函数内部啊