好吧所以我有一个输入,并且我试图使它成为当输入特定名称时,它会发出警报和e.off()。我不知道为什么这段代码不起作用。代码是在函数中,但没关系,我只是在这里遇到问题谢谢。 html输入确实有#nameInput的id,所以我们也可以。
var name = $('#nameInput').val();
var names = ["john","jon","johnn"];
var a = names.indexOf("john","jon","johnn") > -1;
if (name == a) {
alert('That is the Bosses name silly!');
e.off();
}
答案 0 :(得分:3)
.indexOf()
函数不是jQuery的东西;它是(现代)标准JavaScript的一部分。它需要一个参数和一个可选参数。第一个是要搜索的东西,第二个可选参数是搜索的起始位置(默认为索引0)。
该函数返回一个数字,正如您的代码所期望的那样。但是,您可以将输入字段中的名称与您对true
的(错误)调用后的比较返回的false
/ .indexOf()
进行比较,因此,这并不奇怪它没有做你期望的事。
答案 1 :(得分:1)
var name = $('#nameInput').val();
var names = ["john","jon","johnn"];
var bad_name = false;
for(var k in names) {
var this_name = names[k];
if( name.indexOf(this_name) > -1 ) {
bad_name = true;
break;
}
}
if(bad_name) {
alert('That is the Bosses name silly!');
e.off();
}
.indexOf
使用不当。它被调用的对象应该是name
字符串,而不是名称列表,它只需要一个参数,所以你必须做多次检查。
此外,a
值将是布尔值,因此您直接检查其值,而不是将其与name
进行比较
答案 2 :(得分:0)
如果所有这些都在一个函数中,请考虑在其外部使用另一个函数,以便以后可以在需要时重用它。您需要遍历与字符串匹配的名称数组与数组的项目。有很多方法可以做到,但这里很容易。
function isName(inputName, namesArray) {
var nameFound = false; // Returns false if there's no match
namesArray.forEach(function(name) { // For each name in namesArray
if (inputName === name) {
nameFound = true;
}
});
return nameFound;
}
console.log(isName('john', ['john', 'jon', 'johnn']));
console.log(isName('nobody', ['john', 'jon', 'johnn']));
// You can then have your if statement
if(isName(name, names)) {
alert('That is the Bosses name silly!');
e.off();
}