Javascript 如果找不到任何项,jQuery将执行else语句
当页面加载时(2017年2月6日),一切都很好。但是,如果用户使用输入(日期选择器)将日期更改为2017年2月13日。我得到“没有时间表”。但是我知道有一个有效的日期,因为JSON文件有一个该日期的条目 我不明白为什么我要执行“else”部分。我试图表明,如果JSON文件没有条目,则没有设置时间表Javascript 如果找不到任何项,jQuery将执行else语句,javascript,json,html,Javascript,Json,Html,当页面加载时(2017年2月6日),一切都很好。但是,如果用户使用输入(日期选择器)将日期更改为2017年2月13日。我得到“没有时间表”。但是我知道有一个有效的日期,因为JSON文件有一个该日期的条目 我不明白为什么我要执行“else”部分。我试图表明,如果JSON文件没有条目,则没有设置时间表 $.each(sam.smith, function(i, v) { console.log("value of i is " + i + " and the value of v i
$.each(sam.smith, function(i, v) {
console.log("value of i is " + i + " and the value of v is " + v.date);
if(v.date == theSelectedDate)
{
$('.sam.smithName').html(v.name + "<br>");
$('.sam.smithTitle').html(v.title);
$('.sam.smithMondaySchedule').html(v.mondayAM + "<br>" + v.mondayPM);
$('.sam.smithTuesdaySchedule').html(v.tuesdayAM + "<br>" + v.tuesdayPM);
$('.sam.smithWednesdaySchedule').html(v.wednesdayAM + "<br>" + v.wednesdayPM);
$('.sam.smithThursdaySchedule').html(v.thursdayAM + "<br>" + v.thursdayPM);
$('.sam.smithFridaySchedule').html(v.fridayAM + "<br>" + v.fridayPM);
return false;
} else {
v.mondayAM = "No Schedule";
v.mondayPM = "No Schedule";
v.tuesdayAM = "No Schedule"
v.tuesdayPM = "No Schedule";
v.wednesdayAM = "No Schedule";
v.wednesdayPM = "No Schedule";
v.thursdayAM = "No Schedule";
v.thursdayPM = "No Schedule";
v.fridayAM = "No Schedule";
v.fridayPM = "No Schedule";
$('.sam.smithName').html(v.name + "<br>");
$('.sam.smithTitle').html(v.title);
$('.sam.smithMondaySchedule').html(v.mondayAM + "<br>" + v.mondayPM);
$('.sam.smithTuesdaySchedule').html(v.tuesdayAM + "<br>" + v.tuesdayPM);
$('.sam.smithWednesdaySchedule').html(v.wednesdayAM + "<br>" + v.wednesdayPM);
$('.sam.smithThursdaySchedule').html(v.thursdayAM + "<br>" + v.thursdayPM);
$('.sam.smithFridaySchedule').html(v.fridayAM + "<br>" + v.fridayPM);
return false;
}
});
HTML文件片段
<input type="date" id="date" step="7" min="2017-02-06" />
以及影响表格的部分
<tr>
<td class="lalign"><span class="sam.smithName"></span><span class="sam.smithTitle" style="color: navy;text-align: center;"></span></td>
<td><span class="sam.smithMondaySchedule"></span></td>
<td><span class="sam.smithTuesdaySchedule"></span></td>
<td><span class="sam.smithWednesdaySchedule"></span></td>
<td><span class="sam.smithThursdaySchedule"></span></td>
<td><span class="sam.smithFridaySchedule"></span></td>
</tr>
请检查所选日期的格式。如果使用日期输入的
值设置,则条件v.date==所选日期
将失败
v.date
的格式为mm/dd/yyyy,但所选日期的格式为yyyy-mm-dd
JSFiddle:
也不要设置v
的属性,因为这会导致数据丢失
v.mondayAM = "No Schedule";
v.mondayPM = "No Schedule";
v.tuesdayAM = "No Schedule"
v.tuesdayPM = "No Schedule";
v.wednesdayAM = "No Schedule";
v.wednesdayPM = "No Schedule";
v.thursdayAM = "No Schedule";
v.thursdayPM = "No Schedule";
v.fridayAM = "No Schedule";
v.fridayPM = "No Schedule";
相反,您可以为此保留一个变量,如下所示
var noSchedule = "No Schedule";
$.each(sam.smith, function(i, v) {
console.log("value of i is " + i + " and the value of v is " + v.date);
if (v.date == theSelectedDate) {
$('.sam.smithName').html(v.name + "<br>");
$('.sam.smithTitle').html(v.title);
$('.sam.smithMondaySchedule').html(v.mondayAM + "<br>" + v.mondayPM);
$('.sam.smithTuesdaySchedule').html(v.tuesdayAM + "<br>" + v.tuesdayPM);
$('.sam.smithWednesdaySchedule').html(v.wednesdayAM + "<br>" + v.wednesdayPM);
$('.sam.smithThursdaySchedule').html(v.thursdayAM + "<br>" + v.thursdayPM);
$('.sam.smithFridaySchedule').html(v.fridayAM + "<br>" + v.fridayPM);
} else {
$('.sam.smithName').html(v.name + "<br>");
$('.sam.smithTitle').html(v.title);
$('.sam.smithMondaySchedule').html(noSchedule + "<br>" + noSchedule);
$('.sam.smithTuesdaySchedule').html(noSchedule + "<br>" + noSchedule);
$('.sam.smithWednesdaySchedule').html(noSchedule + "<br>" + noSchedule);
$('.sam.smithThursdaySchedule').html(noSchedule + "<br>" + noSchedule);
$('.sam.smithFridaySchedule').html(noSchedule + "<br>" + noSchedule);
}
});
var noSchedule=“无计划”;
$。每个(sam.smith,函数(i,v){
console.log(“i的值为“+i+”,v的值为“+v.date”);
如果(v.date==所选日期){
$('.sam.smithName').html(v.name+“
”);
$('.sam.smithTitle').html(v.title);
$('.sam.smithMondaySchedule').html(v.mondayAM+“
”+v.mondayPM);
$('.sam.smithTuesdaySchedule').html(v.tuesdayAM+“
”+v.tuesdayPM);
$('sam.smithWednesdaySchedule').html(v.wednesdayAM+“
”+v.wednesdayPM);
$('.sam.smithThursdaySchedule').html(v.thursdayAM+“
”+v.thursdayPM);
$('sam.smithFridaySchedule').html(v.fridayAM+“
”+v.fridayPM);
}否则{
$('.sam.smithName').html(v.name+“
”);
$('.sam.smithTitle').html(v.title);
$('.sam.smithMondaySchedule').html(noSchedule+“
”+noSchedule);
$('.sam.smithTuesdaySchedule').html(noSchedule+“
”+noSchedule);
$('.sam.smithWednesdaySchedule').html(noSchedule+“
”+noSchedule);
$('.sam.smithThursdaySchedule').html(noSchedule+“
”+noSchedule);
$('.sam.smithFridaySchedule').html(noSchedule+“
”+noSchedule);
}
});
请检查所选日期的格式。如果使用日期输入的值设置,则条件v.date==所选日期
将失败
v.date
的格式为mm/dd/yyyy,但所选日期的格式为yyyy-mm-dd
JSFiddle:
也不要设置v
的属性,因为这会导致数据丢失
v.mondayAM = "No Schedule";
v.mondayPM = "No Schedule";
v.tuesdayAM = "No Schedule"
v.tuesdayPM = "No Schedule";
v.wednesdayAM = "No Schedule";
v.wednesdayPM = "No Schedule";
v.thursdayAM = "No Schedule";
v.thursdayPM = "No Schedule";
v.fridayAM = "No Schedule";
v.fridayPM = "No Schedule";
相反,您可以为此保留一个变量,如下所示
var noSchedule = "No Schedule";
$.each(sam.smith, function(i, v) {
console.log("value of i is " + i + " and the value of v is " + v.date);
if (v.date == theSelectedDate) {
$('.sam.smithName').html(v.name + "<br>");
$('.sam.smithTitle').html(v.title);
$('.sam.smithMondaySchedule').html(v.mondayAM + "<br>" + v.mondayPM);
$('.sam.smithTuesdaySchedule').html(v.tuesdayAM + "<br>" + v.tuesdayPM);
$('.sam.smithWednesdaySchedule').html(v.wednesdayAM + "<br>" + v.wednesdayPM);
$('.sam.smithThursdaySchedule').html(v.thursdayAM + "<br>" + v.thursdayPM);
$('.sam.smithFridaySchedule').html(v.fridayAM + "<br>" + v.fridayPM);
} else {
$('.sam.smithName').html(v.name + "<br>");
$('.sam.smithTitle').html(v.title);
$('.sam.smithMondaySchedule').html(noSchedule + "<br>" + noSchedule);
$('.sam.smithTuesdaySchedule').html(noSchedule + "<br>" + noSchedule);
$('.sam.smithWednesdaySchedule').html(noSchedule + "<br>" + noSchedule);
$('.sam.smithThursdaySchedule').html(noSchedule + "<br>" + noSchedule);
$('.sam.smithFridaySchedule').html(noSchedule + "<br>" + noSchedule);
}
});
var noSchedule=“无计划”;
$。每个(sam.smith,函数(i,v){
console.log(“i的值为“+i+”,v的值为“+v.date”);
如果(v.date==所选日期){
$('.sam.smithName').html(v.name+“
”);
$('.sam.smithTitle').html(v.title);
$('.sam.smithMondaySchedule').html(v.mondayAM+“
”+v.mondayPM);
$('.sam.smithTuesdaySchedule').html(v.tuesdayAM+“
”+v.tuesdayPM);
$('sam.smithWednesdaySchedule').html(v.wednesdayAM+“
”+v.wednesdayPM);
$('.sam.smithThursdaySchedule').html(v.thursdayAM+“
”+v.thursdayPM);
$('sam.smithFridaySchedule').html(v.fridayAM+“
”+v.fridayPM);
}否则{
$('.sam.smithName').html(v.name+“
”);
$('.sam.smithTitle').html(v.title);
$('.sam.smithMondaySchedule').html(noSchedule+“
”+noSchedule);
$('.sam.smithTuesdaySchedule').html(noSchedule+“
”+noSchedule);
$('.sam.smithWednesdaySchedule').html(noSchedule+“
”+noSchedule);
$('.sam.smithThursdaySchedule').html(noSchedule+“
”+noSchedule);
$('.sam.smithFridaySchedule').html(noSchedule+“
”+noSchedule);
}
});
每次用户向您发送数据时,您的函数都会从JSON文件中的第一个元素开始迭代,这就是为什么2017年2月6日会过去(这是第一个日期),但当您的v.date发生变化时,会从JSON文件中的第一个元素开始迭代,其中日期是2017年2月6日。您需要完全检查JSON文件,然后转到else块。每次用户向您发送数据时,您的函数从JSON文件中的第一个元素开始迭代,这就是为什么2017年2月6日过去了(这是第一个日期),但当您的v.date更改时,从JSON文件中的第一个元素开始迭代,其中日期是2017年2月6日。您需要完全检查JSON文件,然后转到else块。首先:带点的类名<代码>:-O
我知道您没有使用CSS,但它完全不正确。我很想知道为什么这对你有用:$('.sam.smithTuesdaySchedule')
而不是$('.sam\\.smithTuesdaySchedule')
@MarcosPérezGude我希望我能向你解释一下。我看到一个网站在他们的例子中使用了它,我用它作为模板。我看到了问题,但我不知道如何解决它。看起来我没有解析我的JSON对象。首先:带点的类名<代码>:-O
我知道您没有使用CSS,但它完全不正确。我很想知道为什么这对你有用:$('.sam.smithTuesdaySchedule')
而不是$('.sam\\.smithTuesdaySchedule')
@MarcosPérezGude我希望我能向你解释一下。我看到一个网站在他们的例子中使用了它,我用它作为模板。我看到了问题,但我不知道如何解决它。看起来我没有解析JSON对象。我修复了函数中的格式设置。var theSelectedDate=$(“#date”).val();变量部分=所选的日期分割('-');第[2]部分=parseInt(第[2]部分);所选日期=零件[1]+“/”+零件[2]+“/”+零件[0];没有。我的函数中总是有代码来更改日期的格式,但我想我看到了