JavaScript无法识别数组声明
我试图对照预定义的值数组检查用户输入,以确保用户输入的是有效的输入 为此,我使用jQuery的JavaScript无法识别数组声明,javascript,jquery,arrays,Javascript,Jquery,Arrays,我试图对照预定义的值数组检查用户输入,以确保用户输入的是有效的输入 为此,我使用jQuery的$.inArray()函数。它有两个参数:要检查的值和要使用的数组。如果找到数组中的值,则返回该值的索引;如果未找到,则返回-1 但是,当我使用$.inArray()函数时,它似乎无法识别genrearay数组(请参见下面的代码)。虽然这里没有显示,genrearay变量在函数调用中没有正确的语法突出显示。此外,似乎执行了if检查,因为控制台上没有显示任何内容(甚至没有错误) if语句语法工作正常-我用
$.inArray()
函数。它有两个参数:要检查的值和要使用的数组。如果找到数组中的值,则返回该值的索引;如果未找到,则返回-1
但是,当我使用$.inArray()
函数时,它似乎无法识别genrearay
数组(请参见下面的代码)。虽然这里没有显示,genrearay
变量在函数调用中没有正确的语法突出显示。此外,似乎执行了if
检查,因为控制台上没有显示任何内容(甚至没有错误)
if
语句语法工作正常-我用if(1==1)
替换代码,代码执行正常
此外,变量声明的位置似乎也无关紧要。我把它放在代码中每个重要点的前面/后面,结果没有差别
我还排除了类型
变量的任何问题
非常感谢你的帮助
你有没有检查过你作为类型传递的值?您正在对一个空字段进行拆分,并将字段与“+”连接在一起,您将得到一个与“+”连接的字符串。$。inArray()需要单个值,而不是串联值。请将实际值放入类型数组和#genreName.$的html代码中。inArray需要一个值,为什么要发送包含“+”的文本,或者为什么要尝试使用.split(“”).join(“+”)?在条件中,逻辑似乎向后。。。更好地解释匹配案例(用文字)您是如何排除
类型
变量的问题的?我猜你的genreArray
看起来像['genre1','genre2','genre3']
-如果你在#genreName
中输入文本'genre1 genre3'
,你的类型变量将是'genre1+genre3'
。即使true==($.inArray($.genre1',['genre1','genre2','genre3'])!=-1)
和true==($.inArray($.genre3',['genre1','genre2','genre3'])!=-1)
,false==($.inArray($.inArray('genre1+genre3',['genre1','genre2','genre3'])!=-1)
$(document).ready(function() {
var genreArray = [...];
$('.menu').click(function() {
var genre = $('#genreName').val().split(' ').join('+');
$('#error').text('');
if ($.inArray(genre, genreArray) != -1) {
$('#error').text('Sorry, this is not a valid genre.');
}
})
})