js函数中的调用

 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外面?

匿名函数 为啥能写在里面使用?

qq_天蝎的尾巴卍_0
浏览 1459回答 3
3回答

千秋此意

<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自己。

西兰花伟大炮

你把chg()放进去也是一样的,里面外面都是可以,不管什么匿名函数,onload只是在页面加载完成后再执行里面的代码
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript