如何在 JavaScript 中实施 .includes
How to implement .includes in JavaScript
我正在使用 JS 和 HTML 开发一个非常简单的聊天机器人,我有以下代码输出“答案”作为对用户所问内容的答复。这工作正常但是当我尝试实施 .includes 以检查是否已询问某个短语时它不再输出任何内容。例如,如果用户问“can you help”,它应该输出与“help”相同的答案,因为它包含“help”关键字。没有 .includes 代码工作正常。
function talk() {
var know = {
"Hey": "Hello!",
"Help": `You can find help by clicking <a href='https://addressname.com'target="_blank">here</a>`
};
var user = document.getElementById('userBox').value;
document.getElementById('chatLog').innerHTML = user + "<br>";
if (user in know) {
document.getElementById.includes('chatLog').innerHTML = know[user] + "<br>";
} else {
document.getElementById('chatLog').innerHTML = "I do not understand.";
}
}
我想你需要更改下面的行
document.getElementById.includes('chatLog').innerHTML
作为
document.getElementById('chatLog').innerHTML.includes(user)
includes() 方法确定数组是否在其条目中包含某个值,并根据需要返回 true 或 false。
希望这对您有所帮助:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes
更新:
var know = {
"Hey": "Hello!",
"Help": `You can find help by clicking <a href='https://addressname.com' target="_blank">here</a>`
};
function goo() {
var userBox = document.getElementById('userBox');
var userInput = userBox.value;
var chatLog = document.getElementById('chatLog');
var chatLogContent = "";
if (!userInput) {
chatLogContent = 'Please enter some value'
}
var hasKeyword = false;
for (var key in know) {
if (userInput.toLowerCase().includes(key.toLowerCase())) {
hasKeyword = true;
break;
}
}
if (hasKeyword) {
chatLogContent += know[key] + "<br>"; //or use know.key
} else {
chatLogContent += "I do not understand.<br>";
}
var client = document.createElement('div');
client.setAttribute('class', 'client');
client.innerHTML += userInput + "<br>";
chatLog.appendChild(client);
var server = document.createElement('div');
server.setAttribute('class', 'server');
server.innerHTML = chatLogContent;
chatLog.appendChild(server);
}
更新
这应该会有帮助:
https://jsfiddle.net/smileyface/948bg03n/1/
好吧,我不擅长css。但它工作得很好。每次单击按钮时滚动浏览。
在这里试试 - Localhost 聊天框在这里:https://jsfiddle.net/smileyface/948bg03n/1/show
更新
正如您在评论中所问,
这只会显示当前评论
if(hasKeyword){
chatLogContent = know[key] + "<br>"; //or use know.key
}else{
chatLogContent = "I do not understand.<br>";
}
chatLog.innerHTML = chatLogContent;
includes() 方法确定数组是否在其条目中包含 某个值,并根据需要返回 true 或 false。
此外,getElementById 是一个函数,它需要元素的 ID 作为参数。
如果您想要更改具有 ID chatLog
的元素的内部 HTML,则必须按以下方式进行。
if (user in know) {
document.getElementById('chatLog').innerHTML = know[user] + "<br>";
}
我正在使用 JS 和 HTML 开发一个非常简单的聊天机器人,我有以下代码输出“答案”作为对用户所问内容的答复。这工作正常但是当我尝试实施 .includes 以检查是否已询问某个短语时它不再输出任何内容。例如,如果用户问“can you help”,它应该输出与“help”相同的答案,因为它包含“help”关键字。没有 .includes 代码工作正常。
function talk() {
var know = {
"Hey": "Hello!",
"Help": `You can find help by clicking <a href='https://addressname.com'target="_blank">here</a>`
};
var user = document.getElementById('userBox').value;
document.getElementById('chatLog').innerHTML = user + "<br>";
if (user in know) {
document.getElementById.includes('chatLog').innerHTML = know[user] + "<br>";
} else {
document.getElementById('chatLog').innerHTML = "I do not understand.";
}
}
我想你需要更改下面的行
document.getElementById.includes('chatLog').innerHTML
作为
document.getElementById('chatLog').innerHTML.includes(user)
includes() 方法确定数组是否在其条目中包含某个值,并根据需要返回 true 或 false。
希望这对您有所帮助:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes
更新:
var know = {
"Hey": "Hello!",
"Help": `You can find help by clicking <a href='https://addressname.com' target="_blank">here</a>`
};
function goo() {
var userBox = document.getElementById('userBox');
var userInput = userBox.value;
var chatLog = document.getElementById('chatLog');
var chatLogContent = "";
if (!userInput) {
chatLogContent = 'Please enter some value'
}
var hasKeyword = false;
for (var key in know) {
if (userInput.toLowerCase().includes(key.toLowerCase())) {
hasKeyword = true;
break;
}
}
if (hasKeyword) {
chatLogContent += know[key] + "<br>"; //or use know.key
} else {
chatLogContent += "I do not understand.<br>";
}
var client = document.createElement('div');
client.setAttribute('class', 'client');
client.innerHTML += userInput + "<br>";
chatLog.appendChild(client);
var server = document.createElement('div');
server.setAttribute('class', 'server');
server.innerHTML = chatLogContent;
chatLog.appendChild(server);
}
更新
这应该会有帮助:
https://jsfiddle.net/smileyface/948bg03n/1/
好吧,我不擅长css。但它工作得很好。每次单击按钮时滚动浏览。
在这里试试 - Localhost 聊天框在这里:https://jsfiddle.net/smileyface/948bg03n/1/show
更新
正如您在评论中所问,
这只会显示当前评论
if(hasKeyword){
chatLogContent = know[key] + "<br>"; //or use know.key
}else{
chatLogContent = "I do not understand.<br>";
}
chatLog.innerHTML = chatLogContent;
includes() 方法确定数组是否在其条目中包含 某个值,并根据需要返回 true 或 false。
此外,getElementById 是一个函数,它需要元素的 ID 作为参数。
如果您想要更改具有 ID chatLog
的元素的内部 HTML,则必须按以下方式进行。
if (user in know) {
document.getElementById('chatLog').innerHTML = know[user] + "<br>";
}