0

ユーザーが検索を実行するとリストが再作成されるように、動的リストを作成しようとしています。問題は、元の div コンテンツを格納するために不変の定数を作成できないように見えることです。関数 get が呼び出されるたびに、この変数は再初期化されます。

Cookie を使用せずにこれを達成する方法はありますか? どんな助けでも心から感謝します。このステップを通過できなかったため、コードは完全ではありませんが、完全に間違った方向に向かっていると思われる場合はお知らせください。

const originalList = document.getElementById('patientList').getElementsByTagName('li'); 冷凍 = Object.freeze(originalList);

  <script>
    const originalList = document.getElementById('patientList').getElementsByTagName('li');
    frozen = Object.freeze(originalList);
    var newList = '';
    var found = false;
    function filterPatients(){
        var searchQuery = document.getElementById('search');
        var query = searchQuery.value;
        var listContainer = document.getElementById('patientList');
        var patientList = listContainer.getElementsByTagName('li');
        for (var i = 0; i < originalList.length; i++){
            var link = patientList[i].getElementsByTagName('a');
            var link = link[0].text;
            /** remove whitespaces for easy comparison **/
            link = link.toLowerCase();
            query = query.toLowerCase();
            link = link.replace(/\s/g, "");
            query = query.replace(/\s/g, "");

            /** check every character in query **/
                if (link.length > query.length && link.substring(0,query.length) == query){
                    found = true;
                    newList += '<li>' + patientList[i].innerHTML + '</li>';
                }
        }
        if (found == true){
            listContainer.innerHTML = newList;
            newList = '';
        }
        else{
            listContainer.innerHTML = "<li>No patient by that name</li>";
        }
        console.log(frozen);

    }

</script>
4

1 に答える 1

0
const originalList = document.getElementById('patientList').getElementsByTagName('li').cloneNode(true);

originalList を要素のコピーにします。現在、originalList と patientList を同じ要素のリストに設定しているため、一方を変更すると他方も変更されます。element.cloneNode(true) を使用して DOM 要素のディープ コピーを作成する

于 2015-10-16T17:13:07.327 に答える