使用if和else在数组中进行基本搜索

时间:2016-12-15 19:38:19

标签: function search

我正在尝试制作基本的搜索功能。如果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;
  }
}

}

1 个答案:

答案 0 :(得分:0)

在javascript中,有两种方法可以进行比较。

  1. 严格的等式运算符 ===严格的等式运算符。
  2. 如果您不确定要比较的值的确切数据类型,则可以使用==进行比较。
  3. 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>