我有以下代碼:的Javascript:傳遞「這個」值
function Selector()
{
...
this.items = new Array();
// i load here the items with dom-s
this.setActiveItem = function(item)
{
this.items[item].className = "selector-item-active";
...
}
var _this = this;
for (var i=0; i<itemsName.length; i++)
this.items[i].addEventListener("mouseup",function(){_this.setActiveItem(i)});
}
的問題是,當偵聽器調用setActiveItem功能,然後我得到控制檯以下消息:
無法設置屬性「的className」的未定義
所以聽者無法通過這個值。
有沒有解決方法?
我可能是錯的,但它看起來像你定義的數組項目的屬性,沒有定義的數組元素就是開始什麼。 – blackhawk 2013-03-10 21:08:44
我認爲他是對的 – Dogoku 2013-03-10 21:09:33
我認爲你的實際元素在這個數組中,所以你應該把'this.items [i]'傳遞給listener,而不是'this'。因此,把'_this'放在for裏面,像這樣:'var _this = this.items [i];',這可以解決你的問題(取決於你的數組是什麼)。 – Sygmoral 2013-03-10 21:10:28