名前のリストを作成しようとしていますが、ユーザーがテキストを入力するたびに名前をフィルタリングしてユーザーが入力したテキストと一致します。ユーザーがクリアボタンをクリックすると、入力をクリアしてすべての名前を再度表示する必要があります。ユーザーがJavaScriptでテキストを入力したときにシーケンスに一致しない単語をフィルタリングする
私はdivに表示する名前の配列を作った。問題は、最初にすべての名前を調べると、完全にフィルタリングされます(すべてのキーアップイベントで、チェックするすべての名前をループします...)。もう一度ループして(ユーザーが入力する2番目の文字)、それはもはや単語を削除しません...誰かが私が問題を解決するのを助けることができますか?
また、私はクリアボタンをクリックしたとき、それは画面をクリアし、アレイからのすべての単語をバック置くが、それはもう、それが動作しない単語を削除しません...
これは、私のjavascriptファイルのコード:
words = ["MARY", "PATRICIA", "LINDA", "BARBARA", "ELIZABETH", "JENNIFER", "MARIA", "SUSAN"]
window.addEventListener("load", CreateWords);
function CreateWords() {
for (var i = 0; i < words.length; i++) {
newP = document.createElement('p');
newP.appendChild(document.createTextNode(words[i]));
var div = document.getElementById("wordDiv");
div.appendChild(newP);
newP.style.fontSize = 20;
newP.id = words[i];
}
}
var lettersTyped = document.getElementById("userInput");
lettersTyped.addEventListener("keyup", filterWords);
var clearButton = document.getElementById("clearButton");
clearButton.addEventListener("click", ClearScreen);
function filterWords() {
for (var i = 0; i < words.length; i++) {
var val = words[i].toLocaleLowerCase().search(lettersTyped.value);
if (val == -1) {
var child = document.getElementById(words[i]);
child.parentNode.removeChild(child);
}
}
}
function ClearScreen() {
for (var i = 0; i < words.length; i++) {
newP = document.createElement('p');
newP.appendChild(document.createTextNode(words[i]));
var div = document.getElementById("wordDiv");
div.appendChild(newP);
newP.style.fontSize = 20;
newP.id = words[i];
}
lettersTyped.value = " ";
}
あなたはすでに最初からkeyup上の要素 – aw04