Рассмотрите следующий код. Внутри "videos_list"
элемент i
имеет список элементов, которые я получаю в переменной «пара». Я пытаюсь удалить все элементы, у которых есть атрибут "ai"
, отличный от "list_couple"
(для проверки я ставлю только один элемент). Проблема в том, что когда он находит элемент, он не удаляет остальные элементы после найденного элемента.Удаление списка элементов в Javascript
Пример, иллюстрирующий идею: Рассмотрим список ("x", "r", "t", "b", "h", "p")
и id="t"
.
Что он делает, это ("_", "_", "t", "b", "h", "p")
.
Он должен сделать ("_", "_", "t", "_", "_", "_")
или ("t")
.
Почему значение «i» переключается между 0 и 1 после того, как он находит элемент? Я вижу это с помощью функции alert() в примере. Я считаю, что проблема в цикле «while».
var clicked = 0;
var interval = setInterval(function() {
var list_couple = new Array("2583521"),
clicks = 1,
videos = document.getElementById("videos_list"),
couple = videos.getElementsByTagName("a");
var i = 0;
while(i < couple.length) {
var flag = 0;
//alert(i);// To see the value of the i.
for(j = 0; j < list_couple.length; j++) {
if((couple[i].getAttribute("ai")) == list_couple[j]) {
flag = 1;// Element found.
i++;
break;
}
}
if(!flag) {
videos.removeChild(couple[i].parentNode);
}
}
document.getElementById('btnMoreVideos').click();// Click on the button.
clicked++;
if(clicked >= clicks) {
clearInterval(interval);
}
}, 1000);
Что я делаю неправильно?
Почему вы не используете 'Array.filter'? – japrescott
Что вы делаете неправильно, так это то, что вы делаете все одновременно. отделяйте все это, по крайней мере, от 3 функций с чистыми именами, и вещи должны проясняться сами по себе. – GameAlchemist