getElementsByClassName не работает, если условие - PullRequest
0 голосов
/ 11 февраля 2019

Я пытаюсь получить все имена классов с помощью "items" и проверяю, является ли innerHTML каждого className циклом for и с заданной строкой.Но даже если условие истинно, в условии if ничего не происходит.

Я реализовал с помощью javascript, и все работает, за исключением того, что getElementsByClassName не работает

function clearAndAdd(){
    var texter = document.getElementById("textBox").value;
    if (texter != ""){
        var allList = [];
        document.getElementById("textBox").value = "";
        created = 'deleteCurrent("'+texter+'")';
        document.getElementById("lister").innerHTML = document.getElementById("lister").innerHTML+"<li class='items' onclick='"+created+"'>"+texter+"<span></span></li>";
        document.getElementById("textBox").focus();
    }
}
function deleteCurrent(text){
    var allList = [];
    var list = document.getElementsByClassName("items");
    for(var i=0; i<list.length; i++){
        var value = list[i].innerHTML;
        if (value == text){
            document.getElementById("output").innerHTML = value;
            break;
        }
    }
}

<!-- HTML code -->
<body>
<div class="input-categories">
<ul id="lister">
</ul>
<input type="text" id="textBox" onblur="clearAndAdd();" />
</div>
<div id="output">
</div>
</body>

Когда я 'Я запускаю код с передачей строки в тексте ... даже значение и текст совпадают, если условие не выполняется.Может ли кто-нибудь помочь мне с этим

1 Ответ

0 голосов
/ 11 февраля 2019

Содержимое, возвращаемое list[i].innerHTML, содержит тег <span>, поэтому, очевидно, он никогда не будет соответствовать тексту, который вы ищете.

Вместо innerHTML используйте свойство textContent: оно просто вернет текстовое содержимое:

var value = list[i].textContent; 
...