无法在选项卡中显示下拉菜单
Can not show dropmenus in tabs?
我的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';}
相关文章:
- 基于其他下拉菜单选择隐藏/显示下拉菜单
- jQuery子菜单在折叠时仍然显示下拉菜单
- 当上一个下拉菜单选择了某些内容时,javascript显示下拉菜单
- 单击时显示下拉菜单
- 悬停 2 秒钟时显示下拉菜单
- Jquery动态隐藏和显示下拉菜单
- JQuery 下拉菜单不会显示下拉菜单
- 如何从顶部显示下拉菜单到 use.show()
- 切换隐藏/显示下拉菜单选择事件
- 滑动切换后,引导程序中未显示下拉菜单
- Angular UI引导-在typeahead上显示下拉菜单-无结果
- 隐藏/显示下拉菜单取决于另一个选项
- 如何在angular .js中显示下拉菜单(已经应用了select it not display)
- 如何获取要显示下拉菜单的选定值
- 延迟显示下拉菜单内容
- 使用外部控件显示下拉菜单
- 使用Javascript隐藏和显示下拉菜单和文本字段
- Jquery显示下拉菜单
- 如何显示下拉菜单滑块效果从下到上悬停后
- 显示下拉菜单时,图像鼠标悬停