用于循环迭代的Javascript.出了问题



我有一个名为data的对象列表。

和1个输入标签。

我想检查数据的person1键中是否存在输入值。如果存在,我写输入值和person2键值。否则写入I don't understand

这个代码是如何给出true答案的。这是CCD_ 6。

试试How old are you这个。如果你输入这个,它必须给I don't understand2次和30

function SendMessage() {
var input = document.getElementById('person'),
sender = document.createElement('p'),
receiver = sender.cloneNode(true),
data = [{
"person1": "Hey",
"person2": "Hey, How are you?"
}, {
"person1": "Hello",
"person2": "Hello friend"
}, {
"person1": "How old are you",
"person2": "30"
},
];
sender.innerText = input.value;
document.body.appendChild(sender);
for (var i = 0; i < data.length; i++) {
if (input.value === data[i].person1) {
receiver.innerText = data[i].person2;
document.body.appendChild(receiver);
i = data.length;
} else {
receiver.innerText = "I don't understand";
document.body.appendChild(receiver);
}
}
}
<input id="person">
<button onclick="SendMessage()">Send message</button>

我找到了丢失的代码。for循环运行良好。我在为循环创建元素之前。每次迭代,我都会更改innerText中的元素。它写CCD_ 10。但当它找到正确答案时。它覆盖了答案。


function SendMessage() { 
var input = document.getElementById('person'), 
sender = document.createElement('p'), 
receiver = sender.cloneNode(true), 
data = [{ "person1": "Hey", "person2": "Hey, How are you?" }, 
{ "person1": "Hello", "person2": "Hello friend" }, 
{ "person1": "How old are you", "person2": "30" }, ]; 
sender.innerText = input.value; 
document.body.appendChild(sender); 
for (var i = 0; i < data.length; i++) { 
if (input.value === data[i].person1) { 
receiver.innerText = data[i].person2; 
console.log(data[i].person2); 
document.body.appendChild(receiver); 
i = data.length; 
} else { 
console.log("I don't understand"); 
receiver.innerText = "I don't understand"; 
document.body.appendChild(receiver); 
} 
} 
}

<input id="person"> 
<button onclick="SendMessage()">Send message</button>

最新更新