msn上的tab功能Firefox對(duì)childNodes處理的一個(gè)BUG
更新時(shí)間:2008年01月21日 13:11:38 作者:
今天公司用到一個(gè)tab功能發(fā)現(xiàn) msn上的不錯(cuò),但是在firefox兼容不好,msn他們的方法就是用了不少的div包含,不過(guò)網(wǎng)上有高人解決了。
Firefox對(duì)childNodes處理的一個(gè)BUG
childNodesFirefox在處理childNodes沒(méi)有過(guò)濾換行與空格。所以在初次使用的時(shí)候,得到效果不是預(yù)期的效果。
HTML
<ul class="tbtn" ID="menuList">
<li class="curr" id="tabap3_btn_0" onclick="tabit(this)">理財(cái)大學(xué)B</li>
<li id="tabap3_btn_1" onclick="tabit(this)">名醫(yī)講堂</li>
<li id="tabap3_btn_2" onclick="tabit(this)">名醫(yī)講堂</li>
<li id="tabap3_btn_3" onclick="tabit(this)">名醫(yī)講堂</li>
<li class="lst" id="tabap3_btn_4" onclick="tabit(this)">影壇熱點(diǎn)</li>
</ul>
JS
function tabit(btn)
{
var idname = new String(btn.id);
var s = idname.indexOf("_");
var e = idname.lastIndexOf("_")+1;
var tabName = idname.substr(0, s);
var id = parseInt(idname.substr(e, 1));
var tabNumber = btn.parentNode.childNodes.length; //IE和FF的值不同
for(i=0;i<tabNumber;i++)
{
if(document.getElementById(tabName+"_div_"+i)!=null) //這里需要進(jìn)行判斷
{
document.getElementById(tabName+"_div_"+i).style.display = "none";
document.getElementById(tabName+"_btn_"+i).style.backgroundImage = "url(pic/t-1-2.gif)";
document.getElementById(tabName+"_btn_"+i).style.borderBottomColor = "#D7F2DA";
document.getElementById(tabName+"_btn_"+i).style.cursor = "pointer";
}
}
document.getElementById(tabName+"_div_"+id).style.display = "block";
btn.style.backgroundColor = "#fff";
btn.style.borderBottomColor = "#fff";
btn.style.cursor = "default";
}
在IE上menuList的childNodes.length的值為5,而在Firefox值為11.因此我們?cè)谑褂胏hildNodes對(duì)象時(shí)需要先對(duì)其判斷或去掉空格。
childNodesFirefox在處理childNodes沒(méi)有過(guò)濾換行與空格。所以在初次使用的時(shí)候,得到效果不是預(yù)期的效果。
HTML
復(fù)制代碼 代碼如下:
<ul class="tbtn" ID="menuList">
<li class="curr" id="tabap3_btn_0" onclick="tabit(this)">理財(cái)大學(xué)B</li>
<li id="tabap3_btn_1" onclick="tabit(this)">名醫(yī)講堂</li>
<li id="tabap3_btn_2" onclick="tabit(this)">名醫(yī)講堂</li>
<li id="tabap3_btn_3" onclick="tabit(this)">名醫(yī)講堂</li>
<li class="lst" id="tabap3_btn_4" onclick="tabit(this)">影壇熱點(diǎn)</li>
</ul>
JS
復(fù)制代碼 代碼如下:
function tabit(btn)
{
var idname = new String(btn.id);
var s = idname.indexOf("_");
var e = idname.lastIndexOf("_")+1;
var tabName = idname.substr(0, s);
var id = parseInt(idname.substr(e, 1));
var tabNumber = btn.parentNode.childNodes.length; //IE和FF的值不同
for(i=0;i<tabNumber;i++)
{
if(document.getElementById(tabName+"_div_"+i)!=null) //這里需要進(jìn)行判斷
{
document.getElementById(tabName+"_div_"+i).style.display = "none";
document.getElementById(tabName+"_btn_"+i).style.backgroundImage = "url(pic/t-1-2.gif)";
document.getElementById(tabName+"_btn_"+i).style.borderBottomColor = "#D7F2DA";
document.getElementById(tabName+"_btn_"+i).style.cursor = "pointer";
}
}
document.getElementById(tabName+"_div_"+id).style.display = "block";
btn.style.backgroundColor = "#fff";
btn.style.borderBottomColor = "#fff";
btn.style.cursor = "default";
}
在IE上menuList的childNodes.length的值為5,而在Firefox值為11.因此我們?cè)谑褂胏hildNodes對(duì)象時(shí)需要先對(duì)其判斷或去掉空格。
相關(guān)文章
代碼經(jīng)過(guò)精簡(jiǎn)后的仿QQ折疊菜單代碼
代碼經(jīng)過(guò)精簡(jiǎn)后的仿QQ折疊菜單,以前發(fā)過(guò)的,不過(guò)這個(gè)是經(jīng)過(guò)幾輪代碼精簡(jiǎn)后的一個(gè)版本,而且在各瀏覽器下的表現(xiàn)也很不錯(cuò),兼容性沒(méi)出問(wèn)題。2010-09-09
css 有彈動(dòng)效果的網(wǎng)頁(yè)導(dǎo)航
發(fā)了個(gè)韓國(guó)網(wǎng)站(www.firstkids.co.kr)給我,讓我用CSS寫(xiě)一個(gè)類似這個(gè)網(wǎng)站的導(dǎo)航欄效果。思路是:背景圖像定位!2009-10-10
用dtree實(shí)現(xiàn)樹(shù)形菜單 dtree使用說(shuō)明
本節(jié)主要介紹用dtree來(lái)實(shí)現(xiàn)樹(shù)形的菜單,需要的朋友可以參考下。2011-10-10
可折疊展開(kāi)的簡(jiǎn)單目錄實(shí)現(xiàn)代碼
簡(jiǎn)單的目錄,展開(kāi)菜單,鼠標(biāo)點(diǎn)擊即可展開(kāi),再次點(diǎn)擊即可合攏,類似樹(shù)形菜單的功能,在瀏覽網(wǎng)頁(yè)時(shí)會(huì)見(jiàn)很多,不多做介紹了,需要的朋友可以參考下2012-12-12
鼠標(biāo)經(jīng)過(guò)導(dǎo)航菜單時(shí)顏色改變效果
鼠標(biāo)經(jīng)過(guò)導(dǎo)航菜單的時(shí)候,顏色改變,可自定義顏色。2010-07-07
JavaScript CSS創(chuàng)建右擊菜單效果代碼
右擊菜單效果2008-12-12
javascript 三級(jí)下拉選擇菜單Levels對(duì)象
javascript 三級(jí)下拉選擇菜單Levels對(duì)象,非常的不錯(cuò),大家可以參考下。2009-07-07

