多物體運(yùn)動(dòng)傳入obj問題
for (var i = 0; i < aLi.length; i++) {
? ?aLi[i].timer = null;
? ?aLi[i].onmouseover = function () {
? ? ? ?startMove(ali[i], {width:400, height:200});
? ?}
? ?aLi[i].onmouseout = function () {
? ? ? ?startMove(aLi[i], {width:200, height:100});
? ?}
}
當(dāng)這樣傳入aLi[i]時(shí),瀏覽器會(huì)報(bào)錯(cuò)TypeError: Cannot read property 'timer' of undefined
而當(dāng)傳入this時(shí),就不會(huì)存在這個(gè)問題
2016-05-01
this的特點(diǎn)是,誰調(diào)用指向誰,所以當(dāng)你第一個(gè)參數(shù)傳this的時(shí)候,改變自身的屬性,這個(gè)無異議;
當(dāng)你將第一個(gè)參數(shù)傳遞為aLi[i]時(shí),本意是考慮到變量i代表的是當(dāng)前aLi的索引值,所以可以指向當(dāng)前的li元素。但事實(shí)并非如此,i這個(gè)參數(shù)在startMove這個(gè)方法中執(zhí)行的時(shí)候是undefined的,所以timer屬性也就沒辦法被正確定義了。
2016-05-01
把startMove(ali[i], {width:400, height:200});中的ali[i]換成this試試
可以參考我的一個(gè)例子 ?https://github.com/KaiWang0712/jsExercise.git? ? ?多物體同時(shí)運(yùn)動(dòng)+鏈?zhǔn)竭\(yùn)動(dòng).html