2016-12-15 33 views
0

我正在嘗試進行基本搜索功能。如果input.value確實存在於數組警告消息中,如果不存在,則將其推送到HTML中的數組和顯示。我認爲我已經完成了大部分工作,但有一處錯誤。預先感謝您的幫助傢伙。)使用if和else進行基本搜索

<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

在JavaScript中,有2種方法做了對比。

  1. 全等運算符===全等運算符。
  2. 如果您不確定所比較值的確切數據類型,則可以使用==進行比較。

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方法檢查數組中是否存在元素,並返回數組中元素的索引。但是,如果找不到該元素,則返回-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> 
+0

是的,你對「==」是正確的,但它仍然沒有解決問題。我的代碼仍然不起作用。我通過console.log檢查了數組,但按下按鈕後它不包含任何字符串。 – cytzix

+0

因爲myDict爲空,因此對'i Agalo

+0

是的,這是我已經搞糊塗了,因此我已經把一個字符串放在數組「零」。但它仍然無法正常工作。只需複製並粘貼代碼即可看到。循環有一些錯誤。 – cytzix