我有一個循環,用不同的參數使用不同的超時間隔三次調用一個函數:超時會覆蓋數據(JS)
<script type="text/javascript">
var myArray = [];
for (i=0; i<3; i++) {
myArray[i] = [];
myArray[i]['second'] = (1+i)*3000;
myArray[i]['valeur'] = i+i;
setTimeout(function() {
otherfunction(myArray[i]['valeur']);
}, myArray[i]['second']);
}
function otherfunction(data1) {
console.log(data1);
}
</script>
腳本正確調用otherfunction(),但有一個錯誤:
Uncaught TypeError: Cannot read property 'valeur' of undefined
我該如何解決這個問題。看起來像一個關於可變範圍的問題。
的JS陣列並不意味着與鍵一起使用。你想要的是一個JSON對象:'myArray [i] = {}'。 – Stilltorik
在這一點上,變量可能是錯誤的... –
你得到了一個閉環循環問題。所有迭代都指向相同的值。檢查http://stackoverflow.com/questions/8567118/javascript-settimeout-issue-w-for-loop?rq=1 –