javascript顯示隱藏層比較不錯(cuò)的方法分析
更新時(shí)間:2008年09月30日 00:34:20 作者:
通常的解決辦法是把“答案”當(dāng)作整個(gè)問(wèn)題容器的子元素,然后點(diǎn)擊父元素上的按鈕后展開(kāi)對(duì)應(yīng)的子元素。通過(guò)父子元素的對(duì)應(yīng)關(guān)系來(lái)匹配標(biāo)題和答案。
這是一個(gè)Q&A的頁(yè)面,設(shè)計(jì)師希望能夠點(diǎn)擊相關(guān)的問(wèn)題后,在它下方顯示對(duì)應(yīng)的答案。這是一個(gè)比較常見(jiàn)功能,通常的解決辦法是把“答案”當(dāng)作整個(gè)問(wèn)題容器的子元素,然后點(diǎn)擊父元素上的按鈕后展開(kāi)對(duì)應(yīng)的子元素。通過(guò)父子元素的對(duì)應(yīng)關(guān)系來(lái)匹配標(biāo)題和答案。
但是當(dāng)初寫(xiě)html的時(shí)候并沒(méi)有考慮到腳本編寫(xiě)(需求是后加的),所以,答案和標(biāo)題沒(méi)有父子關(guān)系可以對(duì)應(yīng)。 html代碼如下。
所以,這里需要用到另一種方法來(lái)匹配答案和標(biāo)題。我們可以通過(guò)捕捉元素的位置來(lái)匹配它們。也就是說(shuō)第一條標(biāo)題,對(duì)應(yīng)的肯定是整個(gè)序列中的第一條答案,第二條標(biāo)題對(duì)應(yīng)的肯定是第二條答案。 這樣就可以無(wú)視html結(jié)構(gòu)來(lái)控制它們的對(duì)應(yīng)關(guān)系了。
<ul class="qusetionList">
<li class="liHeader"><span class="colABC-A">編號(hào)</span><span class="colABC-B">標(biāo)題</span><span class="colABC-C">編輯者/發(fā)問(wèn)者</span></li>
<li class="liBody"><span class="colABC-A">1</span><span class="colABC-B">想要開(kāi)小店需要付費(fèi)嗎?</span><span class="colABC-C"><a href="#" title="" class="openLink"></a> 客服</span></li>
<li class="answer"><span class="colABC-B">
現(xiàn)階段於策視其所以不收取任何費(fèi)用,請(qǐng)使用者不用擔(dān)心。<BR>
除了加值服務(wù)的功能模組之外。</span><span class="colABC-C"><a href="#" title="" class="closeLink"></a> 客服</span></li>
<li class="liBody"><span class="colABC-A">2</span><span class="colABC-B">想要開(kāi)小店需要付費(fèi)嗎?</span><span class="colABC-C"><a href="#" title="" class="openLink"></a> 客服</span></li>
<li class="answer"><span class="colABC-B">
現(xiàn)階段於策視其所以不收取任何費(fèi)用,請(qǐng)使用者不用擔(dān)心。<BR>
除了加值服務(wù)的功能模組之外。</span><span class="colABC-C"><a href="#" title="" class="closeLink"></a> 客服</span></li>
</ul>
腳本解釋:當(dāng)點(diǎn)擊openLink這個(gè)圖標(biāo)時(shí),顯示和openLink在序列中位置相同的answer。這里需要將onclick事件放在閉包里面,等到for循環(huán)結(jié)束后才被激活。如果沒(méi)有這層閉包,那不管點(diǎn)擊哪個(gè)openLink,顯示的都將是openLink.length的值。
document.getElementsByClassName = function(eleClassName)
{
var getEleClass = [];//定義一個(gè)數(shù)組
var myclass = new RegExp("\\b"+eleClassName+"\\b");//創(chuàng)建一個(gè)正則表達(dá)式對(duì)像
var elem = this.getElementsByTagName("*");//獲取文檔里所有的元素
for(var h=0;h<elem.length;h++)
{
var classes = elem[h].className;//獲取class對(duì)像
if (myclass.test(classes)) getEleClass.push(elem[h]);//正則比較,取到想要的CLASS對(duì)像
}
return getEleClass;//返回?cái)?shù)組
}
//上面這是捕捉class的方法,我一直用它,復(fù)制過(guò)來(lái)就OK。
var answer = document.getElementsByClassName("answer");
var openLink = document.getElementsByClassName("openLink");
var closeLink = document.getElementsByClassName("closeLink");
for (i = 0; i< openLink.length ; i++ )
{
(
function(i){
openLink[i].onclick = function (){
var j = i;
answer[j].style.display = "block"
}
closeLink[i].onclick = function (){
var j = i;
answer[j].style.display = "none"
}
}
)(i);
}
但是當(dāng)初寫(xiě)html的時(shí)候并沒(méi)有考慮到腳本編寫(xiě)(需求是后加的),所以,答案和標(biāo)題沒(méi)有父子關(guān)系可以對(duì)應(yīng)。 html代碼如下。
所以,這里需要用到另一種方法來(lái)匹配答案和標(biāo)題。我們可以通過(guò)捕捉元素的位置來(lái)匹配它們。也就是說(shuō)第一條標(biāo)題,對(duì)應(yīng)的肯定是整個(gè)序列中的第一條答案,第二條標(biāo)題對(duì)應(yīng)的肯定是第二條答案。 這樣就可以無(wú)視html結(jié)構(gòu)來(lái)控制它們的對(duì)應(yīng)關(guān)系了。
復(fù)制代碼 代碼如下:
<ul class="qusetionList">
<li class="liHeader"><span class="colABC-A">編號(hào)</span><span class="colABC-B">標(biāo)題</span><span class="colABC-C">編輯者/發(fā)問(wèn)者</span></li>
<li class="liBody"><span class="colABC-A">1</span><span class="colABC-B">想要開(kāi)小店需要付費(fèi)嗎?</span><span class="colABC-C"><a href="#" title="" class="openLink"></a> 客服</span></li>
<li class="answer"><span class="colABC-B">
現(xiàn)階段於策視其所以不收取任何費(fèi)用,請(qǐng)使用者不用擔(dān)心。<BR>
除了加值服務(wù)的功能模組之外。</span><span class="colABC-C"><a href="#" title="" class="closeLink"></a> 客服</span></li>
<li class="liBody"><span class="colABC-A">2</span><span class="colABC-B">想要開(kāi)小店需要付費(fèi)嗎?</span><span class="colABC-C"><a href="#" title="" class="openLink"></a> 客服</span></li>
<li class="answer"><span class="colABC-B">
現(xiàn)階段於策視其所以不收取任何費(fèi)用,請(qǐng)使用者不用擔(dān)心。<BR>
除了加值服務(wù)的功能模組之外。</span><span class="colABC-C"><a href="#" title="" class="closeLink"></a> 客服</span></li>
</ul>
腳本解釋:當(dāng)點(diǎn)擊openLink這個(gè)圖標(biāo)時(shí),顯示和openLink在序列中位置相同的answer。這里需要將onclick事件放在閉包里面,等到for循環(huán)結(jié)束后才被激活。如果沒(méi)有這層閉包,那不管點(diǎn)擊哪個(gè)openLink,顯示的都將是openLink.length的值。
復(fù)制代碼 代碼如下:
document.getElementsByClassName = function(eleClassName)
{
var getEleClass = [];//定義一個(gè)數(shù)組
var myclass = new RegExp("\\b"+eleClassName+"\\b");//創(chuàng)建一個(gè)正則表達(dá)式對(duì)像
var elem = this.getElementsByTagName("*");//獲取文檔里所有的元素
for(var h=0;h<elem.length;h++)
{
var classes = elem[h].className;//獲取class對(duì)像
if (myclass.test(classes)) getEleClass.push(elem[h]);//正則比較,取到想要的CLASS對(duì)像
}
return getEleClass;//返回?cái)?shù)組
}
//上面這是捕捉class的方法,我一直用它,復(fù)制過(guò)來(lái)就OK。
var answer = document.getElementsByClassName("answer");
var openLink = document.getElementsByClassName("openLink");
var closeLink = document.getElementsByClassName("closeLink");
for (i = 0; i< openLink.length ; i++ )
{
(
function(i){
openLink[i].onclick = function (){
var j = i;
answer[j].style.display = "block"
}
closeLink[i].onclick = function (){
var j = i;
answer[j].style.display = "none"
}
}
)(i);
}
您可能感興趣的文章:
- Javascript顯示和隱藏ul列表的方法
- Javascript與jQuery方法的隱藏與顯示
- javascript實(shí)現(xiàn)信息的顯示和隱藏如注冊(cè)頁(yè)面
- javascript實(shí)現(xiàn)div的顯示和隱藏的小例子
- JavaScript欄目列表隱藏/顯示簡(jiǎn)單實(shí)現(xiàn)
- javascript 隱藏/顯示指定的區(qū)域附HTML元素【legend】用法
- javascript 控制 html元素 顯示/隱藏實(shí)現(xiàn)代碼
- javascript 層隱藏和顯示的代碼
- JAVASCRIPT 點(diǎn)擊顯示 隱藏層
- javascript控制層顯示或隱藏的方法
相關(guān)文章
使用canvas實(shí)現(xiàn)仿新浪微博頭像截取上傳功能
用戶提供圖像大小尺寸不合適,如何用截取上傳呢?接下來(lái)小編教大家使用使用canvas實(shí)現(xiàn)仿新浪微博頭像截取上傳功能解決問(wèn)題,需要的朋友一起學(xué)習(xí)吧。2015-09-09
用innerhtml提高頁(yè)面打開(kāi)速度的方法
這篇文章介紹了用innerhtml提高頁(yè)面打開(kāi)速度的方法,有需要的朋友可以參考一下2013-08-08
關(guān)于ckeditor在bootstrap中modal中彈框無(wú)法輸入的解決方法
今天小編就為大家分享一篇關(guān)于ckeditor在bootstrap中modal中彈框無(wú)法輸入的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-09-09
Javascript取整函數(shù)及向零取整幾種常用的方法
這篇文章主要介紹了Javascript取整函數(shù)及向零取整幾種常用的方法,每種方法都有其特點(diǎn)和適用場(chǎng)景,推薦使用Math.trunc(),因?yàn)樗Z(yǔ)義明確、代碼易讀且性能較好,需要的朋友可以參考下2025-01-01
antd-mobile ListView長(zhǎng)列表的數(shù)據(jù)更新遇到的坑
這篇文章主要介紹了antd-mobile ListView長(zhǎng)列表的數(shù)據(jù)更新遇到的坑,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
以BootStrap Tab為例寫(xiě)一個(gè)前端組件
本文以Bootstrap標(biāo)簽頁(yè)組件為例,介紹如何編寫(xiě)或者封裝一個(gè)前端組件,具體示例代碼大家參考下本文2017-07-07
學(xué)習(xí)并匯集javascript匿名函數(shù)
接觸jQuery很長(zhǎng)時(shí)間了,對(duì)其的實(shí)現(xiàn)有太多疑問(wèn),可謂只知道皮毛,對(duì)其的精髓一竅不通,可悲??!所以有必要研究下其中的原理。2010-11-11

