、比較を行うには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>
はい、「==」については正しいですが、それでも問題は解決していません。私のコードはまだ動作しません。私はconsole.log経由で配列をチェックしましたが、ボタンを押した後に文字列はありません。 – cytzix
myDictが空であるため、 'i
Agalo
はい、それは私がすでに同様に考え出したものなので、配列 "ゼロ"に文字列を入れました。それでも正常に動作しません。コードをコピー&ペーストするだけで表示されます。ループにはいくつかのバグがあります。 – cytzix