为了账号安全,请及时绑定邮箱和手机立即绑定

document.getElementById("myButton2").onclick = buttonAlert; 放的位置问什么会对代码执行效果有影响

<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>


正在回答

4 回答

JS是直译型执行语言,就是按顺序一句一句执行下来,你的js放在了body的前面,浏览器还未渲染好body时你就通过js去找一个id=myButton2的按钮,这是找不到的。找不到还怎么添加属性事件。然后你放在函数内部的时候,当你点击第一个按钮时,html文档已经渲染好了,能找到id=myButton2的按钮,能添加事件。所以有效

1 回复 有任何疑惑可以回复我~
#1

请叫我啊酥 提问者

非常感谢!
2016-04-12 回复 有任何疑惑可以回复我~

因为 你在给btton2 添加 onclick 时 实际先进行的添加方法并没有找到 ID,

只要将 JS部分 放在 body  尾部  或者 在 JS内容上 加上  window.onload=function(){      js 内容           }就可以解决,    是执行顺序的问题  

0 回复 有任何疑惑可以回复我~
#1

请叫我啊酥 提问者

谢谢了。
2016-04-12 回复 有任何疑惑可以回复我~

同小白,刚才试了一下,放在外部一样好使啊。

0 回复 有任何疑惑可以回复我~
#1

请叫我啊酥 提问者

是第二个按钮,我又试了,还是不行。
2016-04-11 回复 有任何疑惑可以回复我~
#2

面朝大海想不开 回复 请叫我啊酥 提问者

第二个按钮 没有行为执行函数啊。 就是第一个函数中的onclick="buttonAlert()"
2016-04-11 回复 有任何疑惑可以回复我~
#3

请叫我啊酥 提问者 回复 面朝大海想不开

但是还能通过这行代码绑定的。 document.getElementById("myButton2").onclick = buttonAlert;
2016-04-11 回复 有任何疑惑可以回复我~

放在外面不是在函数内部啊

0 回复 有任何疑惑可以回复我~
#1

请叫我啊酥 提问者

一定要写到函数内部才有效吗,本人小白,刚学js,请大神说的更清楚点。
2016-04-11 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

document.getElementById("myButton2").onclick = buttonAlert; 放的位置问什么会对代码执行效果有影响

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信