2016-12-15 4 views
0

私は基本的な検索機能を作ろうとしています。配列警告メッセージにinput.valueが存在する場合は、それをHTMLに配列表示するためにpushします。私はすでに仕事のほとんどをやっていると思うが、間違いがある。 JavaScriptであなたの助けの人たちのために事前にありがとうございます。)基本検索を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

、比較を行うには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; 
    } 
} 
} 

アップデート1のようになります。コメントが提供する明確化、に基づいて、あなたは配列の要素が存在するかどうかを確認するために、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