我正在尝试制作基本的搜索功能。如果input.value确实存在于数组警报消息中,如果没有,则将其推送到HTML中的数组和显示。我想我已经完成了大部分工作,但是有一个错误。提前感谢您的帮助。)
<div id="main">
<input id="inputForMyDict">
<button id="ButtonForInputSave" onclick="buttonSave()">Speichern</button>
<p id="demo"></p>
</div>
<script>
var myDict = [];
var buttonSave = function() {
for (var i = 0; i < myDict.length; i++) {
if (document.getElementById("inputForMyDict").value = myDict[i]) {
alert("your input is already in your list");
} else {
myDict.push(document.getElementById("inputForMyDict").value);
document.getElementById("demo").innerHTML = myDict;
}
}
}
答案 0 :(得分:0)
在javascript中,有两种方法可以进行比较。
===
严格的等式运算符。==
进行比较。 行document.getElementById("inputForMyDict").value = myDict[i]
需要比较运算符而不是赋值运算符(=)。因此,您需要将=
替换为==
或===
。
所以你的javascript代码看起来像
var buttonSave = function() {
for (var i = 0; i < myDict.length; i++) {
if (document.getElementById("inputForMyDict").value == myDict[i]) {
// If you know exact data type, then use the below line instead and comment the above line if (document.getElementById("inputForMyDict").value === myDict[i]) {
alert("your input is already in your list");
} else {
myDict.push(document.getElementById("inputForMyDict").value);
document.getElementById("demo").innerHTML = myDict;
}
}
}
Update1:根据评论提供的说明,您不需要使用for循环来检查数组中是否存在元素。 Javascript通过indexOf
方法在数组上提供了一种方便的方法。 indexOf方法检查数组中是否存在元素,并返回Array中元素的索引。但是,如果未找到该元素,则返回-1。
下面的完整代码应该可以使用。
<!DOCTYPE html>
<html>
<body>
<div id="main">
<input id="inputForMyDict">
<button id="ButtonForInputSave" onclick="buttonSave()">Speichern</button>
<p id="demo"></p>
</div>
<script>
var myDict = [];
var buttonSave = function() {
//for (var i = 0; i < myDict.length; i++) {
var valueInTextbox = document.getElementById("inputForMyDict").value;
if(myDict.indexOf(valueInTextbox) > -1){
alert("your input is already in your list");
} else {
myDict.push(valueInTextbox);
document.getElementById("demo").innerHTML = myDict;
}
}
//}
</script>
</body>
</html>