无法在选项卡中显示下拉菜单

Can not show dropmenus in tabs?

本文关键字:显示 下拉菜单 选项      更新时间:2023-09-26

我的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++;
    }
}

您只能选择tabs元素的直接子元素。您需要的是后代(包括嵌套元素):

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

这将选择 ID为tabs的元素中的所有元素(包括嵌套的li),而不仅仅是第一个和第二个li以及ul


下一个问题是子选项卡li的空id。在循环中,它将尝试设置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';}