我有一个不同ID的数组。此数组是从查询填充的,因此每次ID的数量可以不同。所以我想检查我的eventID是否存在于该数组中,如果eventID在数组中有匹配的ID我想要提醒消息,如果不是我想提交我的表单。我的问题是当eventID与数组中的任何记录都不匹配时,我的表单没有提交。这是我的代码:
function saveSlots(){
var records = [];
var eventID = '#eventID#';
//here is my array
records.push(55,56,78,90,44);
for(var i=0; i< records.length; i++){
if(records[i] == eventID){
alert('duplicate')
}else{
//Submit the form
}
}
}
出于某种原因,我的其他人永远不会被执行。在我的if语句中,我只需要检查数组中的一个记录是否与eventID匹配,如果我不需要检查数组中的其他ID。如果有人可以帮助解决这个问题,请告诉我。
答案 0 :(得分:1)
现在编写代码的方式,您将为每个不匹配的元素提交表单一次,因为您的条件if-else将被检查数组中的每个项目。 / p>
我建议使用变量标记发现重复。然后,在循环结束后检查该变量并决定下一步该做什么:
function saveSlots() {
var records = [];
var eventID = '#eventID#';
//here is my array
records.push(55, 56, 78, 90, 44);
var foundDuplicate = false;
for (var i = 0; i < records.length; i++) {
if (records[i] == eventID) {
foundDuplicate = true;
}
}
if(foundDuplicate) {
alert('Duplicate found!');
} else {
alert('Submit form!');
}
}
或者,您可以return
在找到副本后立即退出该功能:
function saveSlots() {
var records = [];
var eventID = '#eventID#';
//here is my array
records.push(55, 56, 78, 90, 44);
var foundDuplicate = false;
for (var i = 0; i < records.length; i++) {
if (records[i] == eventID) {
alert('Duplicate found!');
return;
}
}
alert('Submit form!');
}
答案 1 :(得分:1)
有几件事可能会阻止你。
请务必确认您的活动ID。你有一个字符串'#eventID#',在javascript中它会很好,它仍会评估'55'到55,所以你没事,但要确保你看一下这个数字是否正确。
你的循环将多次调用你的提交,因为你循环通过它。换句话说,60不在你的数组中,所以当它在for循环中查看第一个值55时,它找不到它所提交的,然后当它不匹配时56它再次提交。你应该休息一下;在提交代码中,如果您达到提交,则停止for循环继续。这些多个提交可能会导致问题。甚至更好地使用索引来查找它。如果没有找到,indexOf将返回-1
function saveSlots(){
var records = [];
var eventID = '60';
records.push(55,56,78,90,44);
if(records.indexOf(eventID) === -1)
{
console.log("submission reached");
}
}
你应该确认你的提交工作正常,你可能会发现console.log正在执行,这意味着javascript正在到达正确的区域,但提交似乎不起作用,在这种情况下你知道javascript没问题,但你的提交存在问题。