最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

用JS實(shí)現(xiàn)選項(xiàng)卡

 更新時(shí)間:2020年03月23日 10:46:01   作者:前端coder  
這篇文章主要為大家詳細(xì)介紹了用JS實(shí)現(xiàn)選項(xiàng)卡效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了JS實(shí)現(xiàn)選項(xiàng)卡的具體代碼,供大家參考,具體內(nèi)容如下

案例描述

在瀏覽器中顯示一個(gè)選項(xiàng)卡界面,頭部為1、2、3、4、5。點(diǎn)擊頭部任意一個(gè)數(shù)字,都在下方顯示出不同的信息,并且鼠標(biāo)停留在任意一個(gè)數(shù)字上時(shí),數(shù)字的顏色改變。案例如下圖所示

默認(rèn)的是數(shù)字1中的內(nèi)容

點(diǎn)擊數(shù)字二

點(diǎn)擊其他數(shù)字依此類(lèi)推,在這里就不一一展示了

HTML代碼

全部HTML代碼展示

<div id="table">
 <!-- 頭部 -->
 <div id="header">
  <ul>
  <li class="selected">
   <a href="#" >1</a>
  </li>
  <li>
   <a href="#" >2</a>
  </li>
  <li>
   <a href="#" >3</a>
  </li>
  <li>
   <a href="#" >4</a>
  </li>
  <li>
   <a href="#" >5</a>
  </li>
  </ul>
 </div>
 <!-- 內(nèi)容 -->
 <div id="content">
  <div class="dom" style="display: block">
  <ul>
   <li> <a href="#" >我是第一個(gè)選項(xiàng)卡的內(nèi)容1</a></li>
   <li> <a href="#" >我是第一個(gè)選項(xiàng)卡的內(nèi)容2</a></li>
   <li> <a href="#" >我是第一個(gè)選項(xiàng)卡的內(nèi)容3</a></li>
   <li> <a href="#" >我是第一個(gè)選項(xiàng)卡的內(nèi)容4</a></li>
  </ul>
  </div>
  <div class="dom">
  <ul>
   <li> <a href="#" >我是第二個(gè)選項(xiàng)卡的內(nèi)容1</a></li>
   <li> <a href="#" >我是第二個(gè)選項(xiàng)卡的內(nèi)容2</a></li>
   <li> <a href="#" >我是第二個(gè)選項(xiàng)卡的內(nèi)容3</a></li>
   <li> <a href="#" >我是第二個(gè)選項(xiàng)卡的內(nèi)容4</a></li>
  </ul>
  </div>
  <div class="dom">
  <ul>
   <li> <a href="#" >我是第三個(gè)選項(xiàng)卡的內(nèi)容1</a></li>
   <li> <a href="#" >我是第三個(gè)選項(xiàng)卡的內(nèi)容2</a></li>
   <li> <a href="#" >我是第三個(gè)選項(xiàng)卡的內(nèi)容3</a></li>
   <li> <a href="#" >我是第三個(gè)選項(xiàng)卡的內(nèi)容4</a></li>
  </ul>
  </div>
  <div class="dom">
  <ul>
   <li> <a href="#" >我是第四個(gè)選項(xiàng)卡的內(nèi)容1</a></li>
   <li> <a href="#" >我是第四個(gè)選項(xiàng)卡的內(nèi)容2</a></li>
   <li> <a href="#" >我是第四個(gè)選項(xiàng)卡的內(nèi)容3</a></li>
   <li> <a href="#" >我是第四個(gè)選項(xiàng)卡的內(nèi)容4</a></li>
  </ul>
  </div>
  <div class="dom">
  <ul>
   <li> <a href="#" >我是第五個(gè)選項(xiàng)卡的內(nèi)容1</a></li>
   <li> <a href="#" >我是第五個(gè)選項(xiàng)卡的內(nèi)容2</a></li>
   <li> <a href="#" >我是第五個(gè)選項(xiàng)卡的內(nèi)容3</a></li>
   <li> <a href="#" >我是第五個(gè)選項(xiàng)卡的內(nèi)容4</a></li>
  </ul>
  </div>
 </div>
 </div>
</body>

HTML代碼分解 ----頭部

頭部由一個(gè)包含了5個(gè) li 標(biāo)簽的列表構(gòu)成,每個(gè) li 標(biāo)簽中都包含一個(gè) a 標(biāo)簽

這里的selected選擇器的作用是 改變選中的li的背景顏色

<div id="header">
  <ul>
  <li class="selected">
   <a href="#" >1</a>
  </li>
  <li>
   <a href="#" >2</a>
  </li>
  <li>
   <a href="#" >3</a>
  </li>
  <li>
   <a href="#" >4</a>
  </li>
  <li>
   <a href="#" >5</a>
  </li>
 </ul>
</div>

HTML代碼分解 ----內(nèi)容

在這里每一個(gè)含有dom選擇器的div依次代表的是每一個(gè)選項(xiàng)卡的內(nèi)容

.dom選擇器中設(shè)置display:none;,使每一個(gè)選項(xiàng)卡內(nèi)容隱藏

而對(duì)展現(xiàn)的內(nèi)容另外加一個(gè)style=“display: block”; 的屬性,使其展現(xiàn)在瀏覽器上

 <div id="content">
  <div class="dom" style="display: block">
  <ul>
   <li> <a href="#" >我是第一個(gè)選項(xiàng)卡的內(nèi)容1</a></li>
   <li> <a href="#" >我是第一個(gè)選項(xiàng)卡的內(nèi)容2</a></li>
   <li> <a href="#" >我是第一個(gè)選項(xiàng)卡的內(nèi)容3</a></li>
   <li> <a href="#" >我是第一個(gè)選項(xiàng)卡的內(nèi)容4</a></li>
  </ul>
  </div>
  <div class="dom">
  <ul>
   <li> <a href="#" >我是第二個(gè)選項(xiàng)卡的內(nèi)容1</a></li>
   <li> <a href="#" >我是第二個(gè)選項(xiàng)卡的內(nèi)容2</a></li>
   <li> <a href="#" >我是第二個(gè)選項(xiàng)卡的內(nèi)容3</a></li>
   <li> <a href="#" >我是第二個(gè)選項(xiàng)卡的內(nèi)容4</a></li>
  </ul>
  </div>
  <div class="dom">
  <ul>
   <li> <a href="#" >我是第三個(gè)選項(xiàng)卡的內(nèi)容1</a></li>
   <li> <a href="#" >我是第三個(gè)選項(xiàng)卡的內(nèi)容2</a></li>
   <li> <a href="#" >我是第三個(gè)選項(xiàng)卡的內(nèi)容3</a></li>
   <li> <a href="#" >我是第三個(gè)選項(xiàng)卡的內(nèi)容4</a></li>
  </ul>
  </div>
  <div class="dom">
  <ul>
   <li> <a href="#" >我是第四個(gè)選項(xiàng)卡的內(nèi)容1</a></li>
   <li> <a href="#" >我是第四個(gè)選項(xiàng)卡的內(nèi)容2</a></li>
   <li> <a href="#" >我是第四個(gè)選項(xiàng)卡的內(nèi)容3</a></li>
   <li> <a href="#" >我是第四個(gè)選項(xiàng)卡的內(nèi)容4</a></li>
  </ul>
  </div>
  <div class="dom">
  <ul>
   <li> <a href="#" >我是第五個(gè)選項(xiàng)卡的內(nèi)容1</a></li>
   <li> <a href="#" >我是第五個(gè)選項(xiàng)卡的內(nèi)容2</a></li>
   <li> <a href="#" >我是第五個(gè)選項(xiàng)卡的內(nèi)容3</a></li>
   <li> <a href="#" >我是第五個(gè)選項(xiàng)卡的內(nèi)容4</a></li>
  </ul>
  </div>
</div>

CSS樣式

css代碼就不做詳細(xì)的說(shuō)明了

<style>
 * {
 margin: 0;
 padding: 0;
 box-sizing: border-box;
 text-decoration: none;
 list-style: none;
 }
 a {
 display: inline-block;
 color: black;
 float: left;
 text-align: center;
 }
 #table {
 width: 500px;
 height: 170px;
 margin: 0 auto;
 margin-top: 50px;
 border: 1px solid #e0e0e0;
 }
 /* 頭部樣式 */
 #table #header {
 width: 100%;
 height: 50px;
 }
 #table #header a {
 width: 20%;
 line-height: 50px;
 background-color: #e0e0e0;
 }
 #table #header a:hover {
 color: red;
 }
 #table #header .selected a{
 background-color:whitesmoke;
 }

 /* 內(nèi)容樣式 */
 #table #content {
 width: 100%;
 height: 120px;
 }
 #table #content .dom {
 margin-top: 10px;
 display: none;
 }
 #table #content .dom a{
 width: 50%; 
 padding: 10px 0;
 }

JS實(shí)現(xiàn)代碼一

JS代碼需要實(shí)現(xiàn)的是:每點(diǎn)擊一個(gè)選項(xiàng)卡數(shù)字,顯示出相應(yīng)的選項(xiàng)卡內(nèi)容
并且頭部樣式作相應(yīng)的改變

全部JS代碼顯示

<script>
 window.onload = function(){
 // 獲取元素
 var header = document.getElementById('header');
 var hLi = header.getElementsByTagName('li');
 var dom = document.getElementsByClassName('dom');
 // console.log(dom);
 
 // 遍歷hLi中所有的li標(biāo)簽
 for (let index = 0; index < hLi.length; index++) {
  //獲取單個(gè)li標(biāo)簽
  let li = hLi[index];

  //監(jiān)聽(tīng)li標(biāo)簽點(diǎn)擊事件并改變content中的內(nèi)容
  li.addEventListener('click',function(){
  //改變點(diǎn)擊li的樣式
  li.setAttribute('class','selected');
  //消去原來(lái)li的樣式 并將class設(shè)置為null
  for (let j = 0; j < hLi.length; j++) { 
   if( j != index && hLi[j].getAttribute('class') == 'selected'){
   hLi[j].setAttribute('class','null'); 
   break;
   } 
  }
  //改變content中的顯示內(nèi)容
  //遍歷每一個(gè)dom k是dom的下標(biāo)
  for (let k = 0; k< hLi.length; k++) {
   if(index === k)
   dom[k].style.display = 'block';
   else
   dom[k].style.display = 'none';
  } 
  });
 
 }
 
 }
</script>

JS代碼分解 ----頭部樣式改變

對(duì)每一個(gè)li標(biāo)簽添加點(diǎn)擊監(jiān)聽(tīng)器,將點(diǎn)擊的li標(biāo)簽的class屬性置為selected,使其展現(xiàn)在瀏覽器上。

再使用一個(gè)for循環(huán)遍歷每一個(gè)li標(biāo)簽的class屬性的值,若該屬性值===‘selected'并且不是剛剛點(diǎn)擊的li標(biāo)簽,則把該標(biāo)簽的class屬性值改為*‘null'*

 //獲取單個(gè)li標(biāo)簽
  let li = hLi[index];

  //監(jiān)聽(tīng)li標(biāo)簽點(diǎn)擊事件并改變content中的內(nèi)容
  li.addEventListener('click',function(){
  //改變點(diǎn)擊li的樣式
  li.setAttribute('class','selected');
  //消去原來(lái)li的樣式 并將class設(shè)置為null
  for (let j = 0; j < hLi.length; j++) { 
   if( j != index && hLi[j].getAttribute('class') == 'selected'){
   hLi[j].setAttribute('class','null'); 
   break;
   } 
  }

JS代碼分解 ----內(nèi)容改變

用一個(gè)for語(yǔ)句遍歷每一個(gè)dom,如果該dom的下標(biāo)與點(diǎn)擊的 li 標(biāo)簽的下標(biāo)一樣,則將該dom的display置為block,否則置為none

//改變content中的顯示內(nèi)容
  //遍歷每一個(gè)dom k是dom的下標(biāo)
  for (let k = 0; k< hLi.length; k++) {
   if(index === k)
   dom[k].style.display = 'block';
   else
   dom[k].style.display = 'none';
  } 

JS實(shí)現(xiàn)代碼二

代碼一還是有點(diǎn)復(fù)雜了,這里有一個(gè)更簡(jiǎn)單的方法。就不作過(guò)多解釋
重要部分和理解都在注釋中提到了

window.onload = function(){
 // 獲取元素
 var header = document.getElementById('header');
 var hLi = $('header').getElementsByTagName('li');
 var dom = $('content').getElementsByClassName('dom');

 for (let index = 0; index < hLi.length; index++) {
  let li = hLi[index];
  //監(jiān)聽(tīng)點(diǎn)擊事件
  li.addEventListener('click',function(){
  //清除同級(jí)別的選中樣式類(lèi)
  for (let j = 0; j< hLi.length; j++) {
   hLi[j].className = ''; //將class屬性置為空 
   dom[j].style.display = 'none'; //將所有內(nèi)容隱藏
  }

  this.className = 'selected'; //設(shè)置當(dāng)前l(fā)i標(biāo)簽選中類(lèi)
  dom[index].style.display = 'block'; //選定li標(biāo)簽顯示內(nèi)容
  });
  
 }

 //封裝
 function $(id) {
  return typeof id === 'string'? document.getElementById(id) : null;  
 }
}

如果大家還想深入學(xué)習(xí),可以點(diǎn)擊兩個(gè)精彩的專(zhuān)題:javascript選項(xiàng)卡操作方法匯總 jquery選項(xiàng)卡操作方法匯總

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • JavaScript文件上傳的常見(jiàn)問(wèn)題整理

    JavaScript文件上傳的常見(jiàn)問(wèn)題整理

    這篇文章整理了JavaScript文件上傳的常見(jiàn)問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • js的for in循環(huán)和java里foreach循環(huán)的區(qū)別分析

    js的for in循環(huán)和java里foreach循環(huán)的區(qū)別分析

    這篇文章主要介紹了js的for in循環(huán)和java里foreach循環(huán)的區(qū)別,實(shí)例分析了js的for in循環(huán)使用技巧并說(shuō)明了與Java中foreach循環(huán)的使用區(qū)別,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-01-01
  • uniapp中使用vuex并持久化的方法示例

    uniapp中使用vuex并持久化的方法示例

    vuex是基于vuex.js的狀態(tài)管理工具,可以把它理解為一個(gè)倉(cāng)庫(kù),下面這篇文章主要給大家介紹了關(guān)于uniapp中如何使用vuex并持久化的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • js設(shè)置控件的隱藏與顯示的兩種方法

    js設(shè)置控件的隱藏與顯示的兩種方法

    js設(shè)置控件的隱藏與顯示,設(shè)置控件style的display和visibility屬性就可以了,下面有個(gè)示例,需要的朋友可以參考下
    2014-08-08
  • JavaScript原生對(duì)象常用方法總結(jié)(推薦)

    JavaScript原生對(duì)象常用方法總結(jié)(推薦)

    下面小編就為大家?guī)?lái)一篇JavaScript原生對(duì)象常用方法總結(jié)(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-05-05
  • js中call與apply的用法小結(jié)

    js中call與apply的用法小結(jié)

    本篇文章主要是對(duì)js中call與apply的用法進(jìn)行了詳細(xì)的總結(jié)介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2013-12-12
  • BootStrap入門(mén)教程(三)之響應(yīng)式原理

    BootStrap入門(mén)教程(三)之響應(yīng)式原理

    這篇文章主要介紹了BootStrap入門(mén)教程(三)之響應(yīng)式原理的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起看看吧
    2016-09-09
  • 基于JS實(shí)現(xiàn)視頻上傳顯示進(jìn)度條

    基于JS實(shí)現(xiàn)視頻上傳顯示進(jìn)度條

    這篇文章主要介紹了基于JS實(shí)現(xiàn)視頻上傳顯示進(jìn)度條,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • js自定義事件及事件交互原理概述(二)

    js自定義事件及事件交互原理概述(二)

    上一篇的目的只是讓大家簡(jiǎn)單的理解自定事件是如何模擬出來(lái)的,大家不難發(fā)現(xiàn)會(huì)有很多缺陷,本篇主要已解決上一篇的問(wèn)題為主,感興趣的朋友可以參考,或許本文對(duì)你有所幫助
    2013-02-02
  • 除Console.log()外更多的Javascript調(diào)試命令

    除Console.log()外更多的Javascript調(diào)試命令

    本篇文章給大家介紹了除Console.log()外更多的Javascript調(diào)試命令,方便大家更多環(huán)境下的JS調(diào)試,學(xué)習(xí)下吧。
    2018-01-01

最新評(píng)論

汉寿县| 上高县| 广东省| 云南省| 乃东县| 广饶县| 山阴县| 平远县| 霍城县| 原阳县| 墨竹工卡县| 吉隆县| 和林格尔县| 昆山市| 武义县| 宁海县| 多伦县| 杭锦旗| 凌源市| 灌南县| 建湖县| 阜新市| 永靖县| 贺州市| 福建省| 东辽县| 堆龙德庆县| 北碚区| 洪湖市| 阿克| 三门县| 祁东县| 沽源县| 武穴市| 宝清县| 宣汉县| 沧州市| 灌南县| 商城县| 永靖县| 读书|