qq_天蝎的尾巴卍_0
2017-03-16 22:25:50
?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條經驗 獲得超188個贊
<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
提交
取消