好的,所以我正在制作聊天机器人,我遇到了一个问题。因此,每次按下回车键时,我都需要创建一个创建聊天消息的功能。到目前为止,它出来很好,只有一个问题。它复制了一个元素,我只想要一个元素。
要查看我在说什么,请转到http://jsfiddle.net/MatthewKosloski/BHXMa/并输入消息,然后按Enter键。注意有两个“Foo!”消息?我只想要一个。我还想让这些消息按时间顺序从上到下排成,但是在我发现为什么会出现这种重复之前我不能这样做!
function insertAfter(referenceNode, newNode) {
referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);
}
var robotMessage = userMessage;
function intelResponse(){
// ROBOT
var robot = document.createElement("h4");
var robotText = document.createTextNode("Robot");
robot.appendChild(robotText);
robot.className = "rtitle";
document.body.appendChild(robot);
insertAfter(userMessage, robot);
// Robot's response
robotMessage = document.createElement("span");
var robotMessageText = document.createTextNode("FOO");
robotMessage.appendChild(robotMessageText);
robotMessage.className = "rmsg";
document.body.appendChild(robotMessage);
insertAfter(robot, robotMessage);
}
答案 0 :(得分:1)
您正在通过“提交”例程调用“intelResponse”,并在之后显式调用“提交”例程。
答案 1 :(得分:1)
问题出在submitUserResponse
函数的末尾,您还调用了intelResponse
答案 2 :(得分:1)
由于您将该功能调用两次,因此该消息将附加两次。
关键一次:
$(document).keyup(function (e) {
if (e.keyCode == 13) {
submitUserMessage();
intelResponse();
$("#user-input").val("");
}
});
并在submitUserMessage中。
评论其中一个并且不重复:http://jsfiddle.net/BHXMa/2/
答案 3 :(得分:1)
一个非常简单的错误。您正在调用方法intelResponse
两次。修复了问题FIDDLE
if (e.keyCode == 13) {
submitUserMessage();
//intelResponse();
$("#user-input").val("");
}