【发布时间】:2020-12-07 03:38:30
【问题描述】:
我是堆栈的新手,但这是我的问题:
我正在尝试检查一个 html 输入的值是否包含我在数组中的禁用词之一。
我试过了:
- 使用 split(),将 input.value 转换为数组,然后相互比较。
- 使用 toString() 将数组转换为字符串,然后比较两者。
- 使用包含所有单词的字符串 ("wordone wordtwo wordthree") 而不是数组 (["wordone","wordtwo", "wordthree"])。
- 拆分上面的字符串然后比较。
- 以及上述示例的一些变体,但始终使用 include() 方法进行检查。
我真的不明白为什么没有任何效果。
当我在数组中只放一个禁用词时,它会起作用。
如果我在输入元素上写了多个单词,即使数组中只有一个单词,它也不起作用。
这是 HTML:
<input id="field" type="text" size="100">
<button id="check">check</button>
<p id="announce">Message</p>
这是 JS:
fieldIncludes() {
let field = document.querySelector('#field'); //gets the field
let btn = document.querySelector('#check'); //gets the check-field button
let messageBox = document.querySelector('#announce'); // gets the <p> to show a message
let forbiddenWords = ['wordOne', 'wordTwo', 'wordThree'];
btn.addEventListener("click", () => {
if (field.value.includes(forbiddenWords)){
messageBox.innerHTML = "Forbidden!";
} else {
messageBox.innerHTML = "Okay :)";
}
})
}
请忽略 JS 在类中。
【问题讨论】:
-
请注意,大小写也很重要。
"Foo bar".includes('foo')为假,但"Foo bar".toLowerCase().includes('foo')为真
标签: javascript arrays include