好吧,我正在製作聊天機器人,並且遇到了問題。所以我需要創建一個函數,每次按下回車鍵時都會創建一條聊天消息。到目前爲止,它出現的很好,只是一個問題。它是複製一個元素,我只想要其中之一。insertAfter()在我不想要的時候複製了一個元素
要查看我在說什麼,請轉至http://jsfiddle.net/MatthewKosloski/BHXMa/並輸入消息,然後按回車。注意有兩個「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);
}
這是因爲您正在調用'intelResponse'兩次。一旦進入事件處理程序並進入'submitUserMessage'函數。 –