ready: function() {
setup();
function setup() {
for(i=0;i<s.length-1;i++) {
var j = i+1;
document.getElementById(s[i]).onchange = new Function("change("+ j +")");//這裡有個change,但是這個change為什麼提示說找不到
}
change(0);//而這個change可以正常使用
}
function change(v) {
//裡面的代碼是次要的,為什麼s[i]內容改變觸發onchange後找不到定義好的change呢?
}
},
錯誤提示:Uncaught ReferenceError: change is not defined
請問老師改如何修改能讓onchange觸發後找到change函數,謝謝。
為什麼?
我看你沒用庫,你應該了解點原生的js,有個很重要的概念叫執行環境:一個函數進入到執行環境中會初始化一些東西,包括this和arguments。注意
這個初始化,它依賴的是函數的執行環境,可以聯系call和apply來理解。那麼問題來了,你給onchange綁定一個函數,這個函數到element-change的
時候才會執行,它執行的時候你上面這段代碼早已經不在運行環境中了,這個change的函數要到哪裡去找?
解決辦法:
1.全局環境不會被銷毀,用window.change = change將函數掛在全局上。
2.用一個匿名函數包裝:
document.getElementById(s[i]).onchange = function(){ change("+ j +") };