Не можете показать выпадающие меню во вкладках?

0

У меня проблема с моим JavaScript, я не могу правильно показать свои вкладки.
Я не могу показать вкладки на суб-вкладках, не знаете ли вы, какая проблема может быть?

Здесь одна часть моего кода JavaScript (полный код находится в моем jsfiddle):

function basla() {

    var tabListItems =  document.getElementById('tabs').children;
    for ( var i = 0; i < tabListItems.length; i++ ) {
        if ( tabListItems[i].nodeName == "LI" ) {
            var tabLink = getFirstChildWithTagName1( tabListItems[i], 'A' );
            var id = getHash1( tabLink.getAttribute('href') );
            tabLinks[id] = tabLink;
            contentDivs[id] = document.getElementById( id );
        }
    }

    var i = 0;

    for ( var id in tabLinks ) {
        tabLinks[id].onclick = showTab1;
        tabLinks[id].onfocus = function() { this.blur(); };
        if ( i == 0 ) tabLinks[id].className = 'selected';
        i++;
    }

    var i = 0;

    for ( var id in contentDivs ) {
        if ( i != 0 ) contentDivs[id].className = 'tabIcerik hide';
        i++;
    }
}
  • 0
    Можете ли вы объяснить немного лучше, в чем ваша проблема: что вы ожидаете, когда будете делать что, и что происходит вместо того, что вы ожидаете?
  • 1
    element.children только выбирает прямых потомков, а не вложенных, если я не ошибаюсь. Вы должны получить всех детей рекурсивно.
Показать ещё 2 комментария
Теги:

1 ответ

0
Лучший ответ

Вы выбираете только прямые дочерние элементы вашего tabs. Вы хотите, чтобы потомки (включая вложенные элементы):

var tabListItems =  document.getElementById('tabs').getElementsByTagName('*');

Это выберет все элементы внутри элемента с tabs ID (включая вложенные li), а не только первый и второй li а также ul.


Следующая проблема - ваш пустой идентификатор для subtab li. В вашем цикле он попытается установить tabLinks[""], что, конечно же, невозможно и сломает остальную часть цикла, когда он попадет в этот элемент. Вам нужно поймать этот случай и исключить его:

var id = getHash1( tabLink.getAttribute('href') );
if (id=="") continue;

И, наконец, у вас есть ошибка отображения в начале, прежде чем какая-либо вкладка будет выбрана. Это связано с тем, что класс tabIcerik не устанавливается для первого li если вы не переключитесь на другой элемент, а затем вернетесь к нему. Вы должны либо установить его заранее, либо изменить следующую строку в последнем цикле for.

if ( i != 0 ) {contentDivs[id].className = 'tabIcerik hide';}
else {contentDivs[id].className = 'tabIcerik';}
  • 0
    Большое спасибо, как я могу изменить CSS Название не отображается должным образом?
  • 0
    @Jo_bast что именно ты имеешь в виду? Как это должно показать?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню