SCRIPT
从for循环调用函数:
colorMe(globalStore.data[i].morning,globalStore.data[i].afternoon,globalStore.data[i].evening, globalStore.data[i].UUID);
功能
var k = 0;
var userarray = [];
var dayarray = [];
var dayarray2 = [];
var dayarray3 = [];
var data = 0;
function colorMe(param,param_af,param_eve, param2)
{
/*console.log("DAY "+param);
console.log("user "+param2);*/
//console.log("k= "+k);
console.log("data= "+data);
userarray.push(param2);
//console.log("mY "+userarray[k]);
dayarray.push(param);
dayarray2.push(param_af);
//console.log("afternoon "+dayarray2[k]);
dayarray3.push(param_eve);
//console.log("evening "+dayarray3[k]);
//console.log("Day "+dayarray[k]);
var len = userarray.length;
console.log("K= "+k);
for(;data < k;data++)
{
//console.log("data="+ data);
var arr = dayarray[data];
var arr2 = dayarray2[data];
var arr3 = dayarray3[data];
$("div.morning_"+userarray[data]+" span").each(function() {
if(arr.indexOf($(this).attr("class")) > -1) {
$(this).css("color","#26F525");
}
});
$("div.afternoon_"+userarray[data]+" span").each(function() {
if(arr2.indexOf($(this).attr("class")) > -1) {
$(this).css("color","#26F525");
}
});
$("div.evening_"+userarray[data]+" span").each(function() {
if(arr3.indexOf($(this).attr("class")) > -1) {
$(this).css("color","#26F525");
}
});
}
k++;
}
console.log("data= "+data);
console.log("k= "+k);
记录计数器k
和data
我注意到data= 0
被记录了两次,这就是为什么数组中的最后一项不应用此函数的效果的原因。因为data
仅循环到第6项而{ {1}}循环直到第7项。那么如何让k
也循环到第7项并阻止它在开始时循环两次data
?
记录
(data= 0)
我试过了:
data= 0 //once
K= 0
data= 0//twice
K= 1
data= 1
K= 2
data= 2
K= 3
data= 3
K= 4
data= 4
K= 5
data= 5
K= 6
data= 6
K= 7
1)用有限数字替换for(;data < k;data++)
,如7,但它是函数
不会工作。
2)仍然在for循环中使用k
而不是<=
不能。
3)定义<
答案 0 :(得分:0)
for(;data < k;data++)
//此处条件为data < k
,因此0<0
将失败,导致k++
但data
仍为0
。由于您的情况data=7
,我们永远不会打印data < k
。
<script>
var k = 0;
var data = 0;
function colorMe()
{
console.log("K= "+k);
console.log("data= "+data);
for(;data < k;data++)//here since condition is data < k so 0<0 will fail which make `k++` but `data` is still 0
{
}
k++;
}
for(var i=0;i<7;i++){
colorMe();
}
console.log("data= "+data);
console.log("k= "+k);
</script>
答案 1 :(得分:0)
以下是我所看到的:
第一次到达此循环时for(;data < k;data++)
k
和data
都等于零。因此,条件data < k
为false,因此data
永远不会增加,但k
会因为它在循环外递增而增加。
解决此问题的一种方法是在循环之前增加k
而不是之后:
k++;
for(;data < k;data++) {
...
}
另一种解决方案是将循环更改为for(;data <= k;data++)
。这是一个展示它的工作小提琴:https://jsfiddle.net/eumepcvd/1/
我会再次尝试,如果它不起作用,那么你的错误可能是你没有发布的代码。
这是另一个工作小提琴:http://jsfiddle.net/qm5mxe7q/1/
那个是你在评论中链接到的小提琴的分叉。
另请注意,数组中的第7个项目是第6项,因为它是零索引。如果你想要达到索引7那么数组中需要有8个项目。