作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
下面的代码(手动输入 ID)可以按需要工作。但我真的无法在生产中实现这一点,因为我不知道数组中的条目数。我注意到即使使用下面的代码,如果返回未定义或空值,它也不会显示整个结果。因此,我需要一个函数来迭代 globalStore.data
中的每个条目以及 div.morning、.afternoon 和 .evening 中的每个元素。
我不能简单地写如下,其中[i]代表for循环中的条目数;但这为什么行不通?是否因为 $.each 不能在 for 循环中使用。是否有其他方法可以在 div .morning、.afternoon 和 .evening 的每个元素中进行迭代?
var arr = globalStore.data[i].morning;
var arr2 = globalStore.data[i].afternoon;
var arr3 = globalStore.data[i].evening;
$("div.evening_"+globalStore.data[i].UUID+" span").each(function(){if(arr_ev.indexOf($(this).attr("class")) > -1) {$(this).css("color","#26F525");}});
我还尝试在 for 循环中调用此函数:
colorMe(globalStore.data[i].morning, globalStore.data[i].UUID);
//该函数单独放置在for循环之外。
function colorMe(param, param3)
{
console.log("DAY "+param);//this prints all the days unique to id correctly
console.log("user "+param3);//this prints all the unique id correctly
//But when it comes to using $.each again, it doesn't return anything.
var arr = param;
$("div.morning_"+param3+" span").each(function() {
if(arr.indexOf($(this).attr("class")) > -1) {
//$(this).css("color","#ff0000");
console.log("TEXT "+$(this).text());
}
});
}
//这有效
$(function()
{
var globalStore = {};
globalStore.data = [];
var data;
$.when(
$.get('/search/show_all_tutors.php',function(data){globalStore.data = globalStore.data.concat(data);console.log(data)},"json")
).then(function() {
for (i = 0; i < globalStore.data.length; i++) {
/*long procedural code starts*/
var user = globalStore.data[0].UUID;
var user2 = globalStore.data[1].UUID;
var user3 = globalStore.data[2].UUID;
var user4 = globalStore.data[3].UUID;
var user5 = globalStore.data[4].UUID;
var user6 = globalStore.data[5].UUID;
var user7 = globalStore.data[6].UUID;
var user8 = globalStore.data[7].UUID;
var arr = globalStore.data[0].morning;
var arr2 = globalStore.data[1].morning;
var arr3 = globalStore.data[2].morning;
var arr4 = globalStore.data[3].morning;
var arr5 = globalStore.data[4].morning;
var arr6 = globalStore.data[5].morning;
var arr7 = globalStore.data[6].morning;
var arr8 = globalStore.data[7].morning;
var arr_af = globalStore.data[0].afternoon;
var arr2_af = globalStore.data[1].afternoon;
var arr3_af = globalStore.data[2].afternoon;
var arr4_af = globalStore.data[3].afternoon;
var arr5_af = globalStore.data[4].afternoon;
var arr6_af = globalStore.data[5].afternoon;
var arr7_af = globalStore.data[6].afternoon;
var arr8_af = globalStore.data[7].afternoon;
var arr_ev = globalStore.data[0].evening;
var arr2_ev = globalStore.data[1].evening;
var arr3_ev = globalStore.data[2].evening;
var arr4_ev = globalStore.data[3].evening;
var arr5_ev = globalStore.data[4].evening;
var arr6_ev = globalStore.data[5].evening;
var arr7_ev = globalStore.data[6].evening;
var arr8_ev = globalStore.data[7].evening;
$("div.morning_"+user+" span").each(function(){if(arr.indexOf($(this).attr("class")) > -1) {$(this).css("color","#26F525");}});
$("div.morning_"+user2+" span").each(function(){if(arr2.indexOf($(this).attr("class")) > -1) {$(this).css("color","#26F525");}});
$("div.morning_"+user3+" span").each(function(){if(arr3.indexOf($(this).attr("class")) > -1) {$(this).css("color","#26F525");}});
$("div.morning_"+user4+" span").each(function(){if(arr4.indexOf($(this).attr("class")) > -1) {$(this).css("color","#26F525");}});
$("div.morning_"+user5+" span").each(function(){if(arr5.indexOf($(this).attr("class")) > -1) {$(this).css("color","#26F525");}});
$("div.morning_"+user6+" span").each(function(){if(arr6.indexOf($(this).attr("class")) > -1) {$(this).css("color","#26F525");}});
$("div.morning_"+user7+" span").each(function(){if(arr7.indexOf($(this).attr("class")) > -1) {$(this).css("color","#26F525");}});
$("div.morning_"+user8+" span").each(function(){if(arr8.indexOf($(this).attr("class")) > -1) {$(this).css("color","#26F525");}});
$("div.afternoon_"+user+" span").each(function(){if(arr_af.indexOf($(this).attr("class")) > -1) {$(this).css("color","#26F525");}});
$("div.afternoon_"+user2+" span").each(function(){if(arr2_af.indexOf($(this).attr("class")) > -1) {$(this).css("color","#26F525");}});
$("div.afternoon_"+user3+" span").each(function(){if(arr3_af.indexOf($(this).attr("class")) > -1) {$(this).css("color","#26F525");}});
$("div.afternoon_"+user4+" span").each(function(){if(arr4_af.indexOf($(this).attr("class")) > -1) {$(this).css("color","#26F525");}});
$("div.afternoon_"+user5+" span").each(function(){if(arr5_af.indexOf($(this).attr("class")) > -1) {$(this).css("color","#26F525");}});
$("div.afternoon_"+user6+" span").each(function(){if(arr6_af.indexOf($(this).attr("class")) > -1) {$(this).css("color","#26F525");}});
$("div.afternoon_"+user7+" span").each(function(){if(arr7_af.indexOf($(this).attr("class")) > -1) {$(this).css("color","#26F525");}});
$("div.afternoon_"+user8+" span").each(function(){if(arr8_af.indexOf($(this).attr("class")) > -1) {$(this).css("color","#26F525");}});
$("div.evening_"+user+" span").each(function(){if(arr_ev.indexOf($(this).attr("class")) > -1) {$(this).css("color","#26F525");}});
$("div.evening_"+user2+" span").each(function(){if(arr2_ev.indexOf($(this).attr("class")) > -1) {$(this).css("color","#26F525");}});
$("div.evening_"+user3+" span").each(function(){if(arr3_ev.indexOf($(this).attr("class")) > -1) {$(this).css("color","#26F525");}});
$("div.evening_"+user4+" span").each(function(){if(arr4_ev.indexOf($(this).attr("class")) > -1) {$(this).css("color","#26F525");}});
$("div.evening_"+user5+" span").each(function(){if(arr5_ev.indexOf($(this).attr("class")) > -1) {$(this).css("color","#26F525");}});
$("div.evening_"+user6+" span").each(function(){if(arr6_ev.indexOf($(this).attr("class")) > -1) {$(this).css("color","#26F525");}});
$("div.evening_"+user7+" span").each(function(){if(arr7_ev.indexOf($(this).attr("class")) > -1) {$(this).css("color","#26F525");}});
$("div.evening_"+user8+" span").each(function(){if(arr8_ev.indexOf($(this).attr("class")) > -1) {$(this).css("color","#26F525");}});
/*ends*/
$("#contents").append("<div class='small-12 medium-12 large-12 columns text-left'> Availability:</div><div class='small-6 medium-6 large-6 columns text-left day morning_"+globalStore.data[i].UUID+"' id='"+globalStore.data[i].UUID+"'>Morning: <span class='Mon'>M </span><span class='Tue'>T </span><span class='Wed'>W </span><span class='Thrs'>T </span><span class='Fri'>F </span><span class='Sat'>S </span><span class='Sun'>S</span></div><div class='small-6 medium-6 large-6 columns text-left day afternoon_"+globalStore.data[i].UUID+"' id='"+globalStore.data[i].UUID+"'>Afternoon: <span class='Mon'>M </span><span class='Tue'>T </span><span class='Wed'>W </span><span class='Thrs'>T </span><span class='Fri'>F </span><span class='Sat'>S </span><span class='Sun'>S</span></div><div class='small-6 medium-6 large-6 columns text-left day evening_"+globalStore.data[i].UUID+"' id='"+globalStore.data[i].UUID+"'>Evening: <span class='Mon'>M </span><span class='Tue'>T </span><span class='Wed'>W </span><span class='Thrs'>T </span><span class='Fri'>F </span><span class='Sat'>S </span><span class='Sun'>S</span></div>");
}
});
});
最佳答案
我为您提供了一个解决方案,我没有使用 $.each
但您不需要编写重复的代码来更改颜色
你可以在你的成功 promise block 中调用一个函数
.then(function() {
for (i = 0; i < globalStore.data.length; i++) {
CheckAvailability(globalStore.data[i].UUID,globalStore.data[0].morning,globalStore.data[i].afternoonon,globalStore.data[i].evening)
//here your other code
}
定义一个这样的函数
function CheckAvailability(User,morning,afternoon,evening){
$("div.morning_"+User+" span").each(function(){
if(morning.indexOf($(this).attr("class")) > -1) {
$(this).css("color","#26F525");
}
});
$("div.afternoon_"+User+" span").each(function(){
if(afternoon.indexOf($(this).attr("class")) > -1) {
$(this).css("color","#26F525");
}
});
$("div.evening_"+User+" span").each(function(){
if(evening.indexOf($(this).attr("class")) > -1) {
$(this).css("color","#26F525");
}
});
}
关于javascript - 如何在 for 循环中使用 $.each 或替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33430319/
我是一名优秀的程序员,十分优秀!