我有一个javascript数组如下,并尝试循环它并根据数组值分配一个全局值。
var arrayData = [3, 5, 8, 11, 18, 20, 24, 25]
当页面加载时,我分配了#34; a"值应为3和" b"值应为5.它们是0th and 1st elements
的数组。
加载页面5秒钟后(b值)" a"值应更改为8(arrayData[2]
)和" b"值应更改为10(arrayData[3]
)。同样,在加载页面11秒(b值)后," a"值应更改为18(arrayData[4]
)和" b"值应更改为20(arrayData[5]
)。
为此,我正在尝试以下setInterval函数代码,
<script type="text/javascript">
var seconds = new Date().getTime() / 1000;
var arrayData = [3, 5, 8, 11, 18, 20, 24, 25]
var a = arrayData[0];
var b = arrayData[1]
window.setInterval(function(){
console.log("B val : "+b+ " A val : "+a)
if(((new Date().getTime() / 1000)- seconds) >= b) {
for (var i = 2; i < arrayData.length; i+=2){
a = arrayData[i];
b = arrayData[i+1];
}
}
}, 100);
</script>
但&#34; a&#34;值最初分配3,然后仅分配24。不与其他奇怪的元素。还&#34; b&#34;值仅分配为5和25。
我的日志显示如下,
B val : 5 A val : 3
B val : 5 A val : 3
B val : 5 A val : 3
B val : 5 A val : 3
B val : 5 A val : 3
B val : 25 A val : 24
B val : 25 A val : 24
B val : 25 A val : 24
B val : 25 A val : 24
B val : 25 A val : 24
任何人都可以提供协助。
答案 0 :(得分:0)
使用Array.prototype.shift
功能。 (试试JSFiddle)
var seconds = new Date().getTime() / 1000;
var arrayData = [3, 5, 8, 11, 18, 20, 24, 25];
var a = arrayData.shift();
var b = arrayData.shift();
window.setInterval(function() {
console.log("B val : " + b + " A val : " + a)
if(((new Date().getTime() / 1000) - seconds) >= b) {
a = arrayData.shift();
b = arrayData.shift();
seconds = new Date().getTime() / 1000;
}
}, 100);
答案 1 :(得分:0)
if语句
if(((new Date().getTime() / 1000)- seconds) >= b)
仅在大约5秒钟后才会生效( b 的初始值),所以在前5秒,a
和b
保持不变;但是,一旦if
语句变为现实,您的a
和b
将在for
语句中发生变化;最后,他们分别成为24
和25
。
答案 2 :(得分:0)
你可能喜欢这样; (为了更快的演示,我只做了100毫秒而不是1000毫秒)
var a,b,
arrayData = [3, 5, 8, 11, 18, 20, 24, 25];
function updateGlobals(arr){
a = arr[0] || a;
b = arr[1] || b;
arr.length >= 2 && setTimeout(updateGlobals,arr[1]*100,arr.slice(2));
console.log(a,b);
}
updateGlobals(arrayData);