動態的Javascript onChange事件我有這個JavaScript片段:上選擇
var selectName["id1","id2","id3"];
setOnClickSelect = function (prefix, selectName) {
for(var i=0; i<selectName.length; i++) {
var selId = selectName[i];
alert(selId);
$(selId).onchange = function() {
$(selId).value = $(selId).options[$(selId).selectedIndex].text;
}
}
}
但是當我改變的價值我的ID1元素,警報寫給我總是「ID3」。 我可以修復它嗎?
編輯: 我已經改變了我的片段與這些語句:
setOnChangeSelect = function (prefix, selectName) {
for(var i=0; i<selectName.length; i++) {
var selId = selectName[i];
$(selId).onchange = (function (thisId) {
return function() {
$(selId).value = $(thisId).options[$(thisId).selectedIndex].text;
}
})(selId);
}
}
但selId總是最後一個元素。
VAR selectName [ 「ID1」, 「ID2」, 「ID3」]; 只需更正 – Kris
'onchange'回調函數內的selID將始終指向循環後的最後一個元素。我編輯的代碼是創建另一個範圍,以便在循環內用'thisId'維護'selId',並且可以在回調函數中返回。你試圖在這裏實現什麼? – steveyang