window.onload = function () { var btnObj = document.getElementById("btn"); btnObj.onclick = function () { alert("123"); } } function chg() { alert("124") }<input type="button" id="btn" value="点击按钮" onclick="chg()"/> chg()函数为什么必须写在onload外面?匿名函数 为啥能写在里面使用?
3 回答
千秋此意
TA贡献158条经验 获得超187个赞
<input type="button" id="btn" value="点击按钮" onclick="chg()"/>
这里的 onclick="chg()"; 叫做事件属性,效果是点击后执行一段js代码,你这里是直接调用函数chg,不过你把函数chg声明在window.onload = function(){}; 这个局部作用域内,全局(当前)作用域内找不到,所以这时候会报一个chg not defined的错误。你非要将函数写在onload内也不是不行,可以这样: chg = function() { // some code }; 或者 window.chg = function() { // some code };不过没啥意义就是了。
btnObj.onclick = function() {}; 其实就相当于将btnObj节点的onclick属性赋值为一个匿名函数,btnObj节点已经拿到,访问、修改属性自然也没问题了,你可以用两种方法分别console一下this,你会发现第一种输出的是window,第二种输出的是btnObj自己。
添加回答
举报
0/150
提交
取消