簡體   English   中英

javascript,如果html輸入值在數組中

[英]Javascript if html input value is in array

我正在使用HTML聊天機器人,需要一種方法來檢查放置的用戶以查看它是否在數組中。 我已經嘗試過了,但是似乎沒有用。 我需要它來吸引用戶歡迎,並將其存儲到數組中。 然后,當用戶輸入數組中的任何一個問候以使用來自數組的隨機值進行答復時。

 var greet = []; var questions = []; var responses=[]; function greets(){ var learn = document.getElementById("greets").value; if (learn == "finished"){ document.cookie = 'greetings='+greet+'; expires=Wed, 1 Jan 2070 13:47:11 UTC; path=/' }else{ greet.push(learn); }; }; function ques(){ var learn = document.getElementById("ques").value; if (learn == "finished"){ document.cookie = 'questions='+questions+'; expires=Wed, 1 Jan 2070 13:47:11 UTC; path=/' }else{ questions.push(learn); }; }; function res(){ var learn = document.getElementById("res").value; if (learn == "finished"){ document.cookie = 'responses='+responses+'; expires=Wed, 1 Jan 2070 13:47:11 UTC; path=/' }else{ responses.push(learn); }; }; var types = [{ key: 'greet', data: greet }, { key: 'questions', data: questions }, { key: 'responses', data: responses }]; function send(){ /* isExist method two arguements arr - array of values. str - string to be search. */ var msg = document.getElementById("msg"); if(types.indexOf( msg )>=0){ console.log("YES"); } else { console.log("NO"); } }; 
 <!DOCTYPE html> <html> <head> <script src="index.js"></script> <div> <p class="user" id="user">User: </p> <p class="bot" id="bot">Bot: </p> </div> <input class="talk" id="msg" placeholder="Start Talking!"></input><button class="send" onclick="send()">Send</button> <p>Once Finished Type Finished.</p> <p>Enter Some Greetings.</p> <input placeholder="Enter Here, Friend!" id="greets"></input> <button onclick="greets()">Enter Greet</button> <br> <p>Enter Some Question You Would Normally Ask.</p> <input placeholder="Enter Here, Friend!" id="ques"></input> <button onclick="ques()">Enter question</button> <br> <p>Enter Some Responses.</p> <input placeholder="Enter Here, Friend!" id="res"></input> <button onclick="res()">Enter Responses</button> <br /> <style> .talk{ float: right; width: 750px; } div{ border: 1px solid black; float: right; width: 800px; height: 250px; } .send{ float:right; background-color: lightblue; border-radius: 2px; border: 2px solid black } </style> <button onclick="loadgreets()">Load Files</button> </head> <body> </body> </html> 

看來您需要進行2項更改:

首先, var msg = document.getElementById("msg")應該為var msg = document.getElementById("msg").value以獲取輸入值,而不是元素本身

其次, if(types.indexOf( msg )>=0)types中的對象之一完全匹配, if(types.indexOf( msg )>=0)將起作用。 但是,由於types是對象的數組,並且看起來像您想要匹配key ,因此可以執行以下問題中建議的操作: 在Javascript中的對象數組中查找值

function contains(msg, types){
    for (var i=0; i < types.length; i++) {
        if (types[i].key === msg) {
            return true;
        }
    }
    return false;
}

if(contains(msg, types){
    console.log("YES");
} else {
    console.log("NO");
}

不知道您打算做什么,但是也許我會為您提供以下建議:

拿到味精值使用document.getElementById("msg") .value的 ;

檢查是否存在問候語,您應該使用:

for(var key in greet) {
    if(greet[key] == msg) {
        //do a response
        break; //no more loops are needed if we found a match
    }
}

indexOf不適用於數組,而javascript中沒有像PHP的in_array這樣的本機函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM