问答详情
源自:8-3 计时器setInterval()

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>


提问者:请叫我啊酥 2016-04-11 09:32

个回答

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

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

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

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

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

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

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

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

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