【发布时间】:2021-11-24 04:20:54
【问题描述】:
从似乎的问题继续
即使 if 语句为真,我的代码也总是输出 else 语句,我认为这是因为 for 循环在被拒绝之前没有完全执行,input.value 在data[i].s 中不可用,因此输出始终为“我不明白”即使input.value = "hi"
如何解决?
function senda() {
var input = document.querySelector('input'),
send = document.createElement('p'),
recv = send.cloneNode(true),
data = [{
"s": "hi",
"r": "hello"
}, {
"s": "whats up",
"r": "alright"
}];
send.innerText = input.value;
document.body.appendChild(send);
for (var i = 0; i < data.length; i++) {
if (input.value == data[i].s) {
recv.innerText = data[i].r;
document.body.appendChild(recv);
} else {
recv.innerText = "I don't understand";
document.body.appendChild(recv);
}
}
}
<input>
<button onclick="senda()">-></button>
【问题讨论】:
-
如果
input.value是hi,那么输出将是hi和I don't understand。因为数组中有两个元素,值会被检查两次。 -
代码按预期工作,你还想要什么?
-
我认为您的逻辑存在一个根本缺陷:如果您想检查
input.value是否与代码中的 any 文本匹配,那么您想突破for 循环。 -
你能否提供一个更好的逻辑,例如,输入是“hi” - 从数据中输出将是“hello”,如果输入在数据中不可用 - 输出将是“不理解” ?
标签: javascript html arrays json for-loop