如何在 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>";
  }