我正在尝试制作基本的搜索功能。如果input.value确实存在于数组警报消息中,则如果不是,请将其推入HTML中的数组and show。我认为我已经完成了大部分工作,但是有一个错误。预先感谢您的帮助。)
<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;
}
}
}
在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:根据注释提供的澄清,您无需有一个循环就可以检查数组中的元素存在。JavaScript通过indexOf
方法在数组上提供了一种方便的方式。索引方法检查数组中存在元素,并返回数组中元素的索引。但是,如果找不到元素,则返回-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>