我对此并不陌生,所以希望我能很好地解释我的问题所在。
我有一个测验,为了回答我创建了一个输入框。要到达另一个链接,您必须在其中放置两个单词,但顺序也无所谓。写下“ word1 word2”或“ word2 word1”无关紧要,只有一条规则:两个单词都应同时提及。 有可能吗?
到目前为止,我的代码:
function checkText()
{
var textwunf_1 = document.getElementById("wunf").value;
if(textwunf_1.toLowerCase() == "word1" && "word2"){
window.open("URL","_self");
}
else{
xxx
}
}
它不起作用。
在我只想检查是否使用一个单词之前,像这样:
var textwunf_2 = 'word1';
function checkText()
{
var textwunf_1 = document.getElementById("wunf").value;
if(textwunf_1.toLowerCase().indexOf(textwunf_2) == -1){
xxx
}
else{
window.open("URL","_self");
}
}
这行得通,但是我不能用两个词来使用,因为如果我写
var textwunf_2 = 'word1 word2';
顺序不能为'word2 word1'...
我的问题有解决方案吗?
希望任何人都能理解和帮助我,谢谢!
答案 0 :(得分:0)
基于OP
的评论:
如果用户键入3个单词,并且其中两个单词与答案匹配,那也应该没问题!只要用户输入我的两个单词,甚至可以输入三个或三个以上的单词,那就更好了。
您可以使用if
上的两个条件来检查两个单词是否都是文本:
textwunf_1.toLowerCase()。indexOf(“ word1”)> = 0
AND
textwunf_1.toLowerCase()。indexOf(“ word2”)> = 0
尝试下一个代码:
var textwunf_2 = 'word1';
var textwunf_3 = 'word2';
function checkText()
{
var textwunf_1 = document.getElementById("wunf").value;
if ((textwunf_1.toLowerCase().indexOf(textwunf_2) >= 0) &&
(textwunf_1.toLowerCase().indexOf(textwunf_3) >= 0))
{
window.open("URL","_self");
}
else
{
// xxx
}
}
答案 1 :(得分:0)
另一种方法:
var words = ["word1", "word2"];
function CheckWords() {
var inputWords = document.getElementById("wunf").value.split(' ');
var allWordsFound = true;
if (inputWords.length !== words.length) { return false; }
inputWords.forEach(function(word) {
if (words.indexOf(word.toLowerCase()) === -1) {
allWordsFound = false;
return;
}
});
return allWordsFound;
}
console.log(CheckWords());
答案 2 :(得分:0)
我正在创建一个接收文本的函数,并检查是否包含答案(xx
和yy
),顺序无关紧要。 ans
列表可以包含1,2个或更多的单词,它将起作用。
let ans = ['xx','yy'];
function check(text){
text = text.toLowerCase();
let counter = 0;
ans.forEach((x) => {text.includes(x) && counter++ })
return counter === ans.length
}
console.log(check("aa bb")) // false
console.log(check("xx bb")) // false
console.log(check("aa yy")) // false
console.log(check("xx yy")) // true
console.log(check("yy xx")) // true