我真的堅持/困惑在這一點上。
我有一個數組,其中有6個項目。數組中的每個項目都使用jquery'.html'方法動態填充元素。但是,我似乎無法將一個事件附加/綁定到這個動態創建的變量。
只要瀏覽器進入問題行(請參閱標記爲「PROBLEM AREA」的區域),就會得到一個'未定義'的錯誤,這真是令人困惑,因爲同一個變量上的所有代碼都可以正常工作。
var eCreditSystem = document.getElementById("creditSystem");
var i = 0;
var eCreditT = new Array(6); // 6 members created which will be recycled
function createCreditTransaction() // func called when a transaction occurs, at the mo, attached to onclick()
{
if (i < 6)
{
eCreditT[i] = undefined; // to delete the existing data in the index of array
addElements (i);
} else
if (i > 5 || eCreditT[i] != undefined)
{
...
}
}
function addElements (arrayIndex) // func called from within the 'createCreditTransaction()' func
{
eCreditT[i] = $(document.createElement('div')).addClass("cCreditTransaction").appendTo(eCreditSystem);
$(eCreditT[i]).attr ('id', ('trans' + i));
$(eCreditT[i]).html ('<div class="cCreditContainer"><span class="cCreditsNo">-50</span> <img class="cCurrency" src="" alt="" /></div><span class="cCloseMsg">Click box to close.</span><div class="dots"></div><div class="dots"></div><div class="dots"></div>');
creditTransactionSlideOut (eCreditT[i], 666); // calling slideOut animation
console.log(eCreditT[i]); // this confirms that the variable is not undefined
/* ***** THE PROBLEM AREA ***** */
$(eCreditT[i]).on ('click', function() // if user clicks on the transaction box
{
creditTransactionSlideBackIn (eCreditT[i], 150); // slide back in animation
});
return i++;
}
我想知道,這可能與js文件在HTML文檔中加載的位置有關嗎? 我把js文件放在HTML標籤的底部。 – Kayote
第二個理論是,當它將事件綁定到變量時,瀏覽器已經讀取並實現了'return i ++',這意味着在那一刻,'eCreditT [i ]'對'i'有不同的價值? – Kayote
它的工作!但是我不知道它爲什麼起作用。 當我評論'返回i ++'並運行代碼時,它工作。現在我的問題是如何在函數結尾處實現「返回i ++」? – Kayote