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

来源:8-3 计时器setInterval()

请叫我啊酥

2016-04-11 09:32

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

  • 丿風雨下聆廳丨灬煒
    2016-04-11 21:34:04
    已采纳

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

    请叫我啊酥

    非常感谢!

    2016-04-12 09:35:48

    共 1 条回复 >

  • 面朝大海想不开
    2016-04-11 19:55:25

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

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

    请叫我啊酥

    谢谢了。

    2016-04-12 09:37:08

    共 1 条回复 >

  • 面朝大海想不开
    2016-04-11 11:16:39

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

    请叫我啊酥 回复面朝大海想不...

    但是还能通过这行代码绑定的。 document.getElementById("myButton2").onclick = buttonAlert;

    2016-04-11 14:27:42

    共 3 条回复 >

  • 请叫我韦爵爷3128480
    2016-04-11 09:40:28

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

    请叫我啊酥

    一定要写到函数内部才有效吗,本人小白,刚学js,请大神说的更清楚点。

    2016-04-11 09:43:57

    共 1 条回复 >

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468194 学习 · 21891 问题

查看课程

相似问题