Удаление атрибута, скрытого от всех элементов DOM, за исключением того, чей индекс дается с помощью функции Javascript, не работающей - PullRequest
0 голосов
/ 26 августа 2018

Моя функция не работает, когда я ее вызываю. Когда я запрашиваю все элементы и зацикливаю их. Я не могу повлиять на интерфейс.

Мне нужно добавить атрибут hidden из всех .question и удалить .hidden из того, чей индекс передается в функцию Js. классы, когда я вызываю функцию.

Вот HTML.

<div class="col-md-12 mb-12 question" hidden="hidden" id="D1">
1
</div>
<div class="col-md-12 mb-12 question" hidden="hidden" id="D2">
2
</div>
<div class="col-md-12 mb-12 question" hidden="hidden" id="D3">
3
</div>
<div class="col-md-12 mb-12 question" hidden="hidden">
4
</div>

1011 *
*

Вызов строк в одном условии If без цикла работает. Что я мог не делать прямо здесь.

function hideothersexcept(index){
    var ALLQNS = $('.question');
    for (i = -1; i < ALLQNS.length; i++) {
        if (index == i) {
            $('#' + getid(index)).removeAttr('hidden')
        } else {
            ALLQNS[index].setAttribute("hidden", "hidden");
        }
    }
}
function getid(elm) {
     var ALLQNS = $('.question');
     k = ALLQNS[elm].getAttribute("id");
     return k;
}

1 Ответ

0 голосов
/ 26 августа 2018

Попробуйте следующий код: он более чистый и лаконичный, чем ручной цикл по всем элементам div, и, что более важно, он работает:)

function hideothersexcept(index){                
    $('.question').each(function(elIndex, el){
            if(elIndex == index){
            $(el).removeAttr('hidden');
        }else{
            $(el).attr('hidden', 'hidden');
        }
    });   
}

hideothersexcept(1);

Он будет скрывать все остальные погружения, кроме div, содержащего число 2.

ПРИМЕЧАНИЕ: индексация начинается с нуля:)

Пожалуйста, дайте мне знать, если это не работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...