第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

編程挑戰(zhàn):tab切換

?<script type="text/javascript">
??? // JS實(shí)現(xiàn)選項(xiàng)卡切換
??? var tab=document.getElementById("tab");
??? var ul=tab.getElementsByTagName("ul")[0];
??? var li=ul.getElementsByTagName("li");
???
??? var content=tab.getElementsByTagName("div");
???
??? for(var i=0,len=li.length;i<len;i++)
??? {
???????? li[i].onclick=function()
???????? {
???????????? for(var n=0;n<len;n++)
???????????? {
???????????????? if(i==n)
???????????????? {
???????????????????? li[n].className = "now";
???????????????????? content[n].className = "";
???????????????? }
???????????????? else
???????????????? {
???????????????????? li[n].className = " ";
???????????????????? content[n].className = "hide";
???????????????? }
???????????? }
???????? }
??? }

??? </script>

為什么無(wú)法切換?不對(duì)嗎?

正在回答

2 回答

這樣寫(xiě)的錯(cuò)誤在哪里呢,首先頁(yè)面加載的時(shí)候,會(huì)把你這段js代碼擼了一邊,關(guān)鍵點(diǎn)在執(zhí)行到了for循環(huán)里面,到底是安什么邏輯執(zhí)行的,回到頁(yè)面上看看,發(fā)現(xiàn)3個(gè)li元素鼠標(biāo)移上去,樣式都變成可點(diǎn)擊的樣式了,說(shuō)明這段代碼li[i].onclick=function(){func1}起了作用,但是在沒(méi)有點(diǎn)擊的情況下,func1是不會(huì)執(zhí)行的,點(diǎn)擊li元素的時(shí)候,才執(zhí)行func1,再看看執(zhí)行func1的邏輯:for 循環(huán),里面一個(gè)if...else...判斷,if的判斷條件是i==n,這個(gè)時(shí)候的i是多少很關(guān)鍵,在最外面的for循環(huán)在頁(yè)面加載的時(shí)候就已經(jīng)執(zhí)行完畢了,循環(huán)第一遍的時(shí)候i=0;i<3;i++,執(zhí)行for循環(huán)里面的代碼,第二遍i=1;i<3;i++,還是執(zhí)行里面的代碼,第三邊i=2;i<3;i++,繼續(xù)執(zhí)行里面的代碼,第四邊i=3,這個(gè)時(shí)候i不小于3了,然后條件看不成立,就不再執(zhí)行這個(gè)for循環(huán)了,所以,里面的for循環(huán)永遠(yuǎn)只會(huì)執(zhí)行else部分(因?yàn)閕=3)你可以測(cè)試下在點(diǎn)擊的時(shí)候alert(i),li[i].onclick=function(){func1;alert(i);}

所以才會(huì)出現(xiàn)提示答案里的oLis[i].index = i這樣一句代碼,頁(yè)面加載的時(shí)候外面的for循環(huán)就實(shí)時(shí)給每個(gè)li元素自定義了一個(gè)index屬性,并賦值i(也就是分別為0,1,2)。

還有一個(gè)解決方法我也說(shuō)不太明白(我也是初學(xué)者),如果要用這個(gè)方法你要去了解一下閉包立即執(zhí)行函數(shù),還有js的內(nèi)存機(jī)制。具體寫(xiě)法如下:

<script type="text/javascript">

? ? // JS實(shí)現(xiàn)選項(xiàng)卡切換

? ? var tab=document.getElementById("tab-list");

? ? var ul=tab.getElementsByTagName("ul")[0];

? ? var li=ul.getElementsByTagName("li");

? ? var content=tab.getElementsByTagName("div");

? ? for(var i=0,len=li.length;i<len;i++){

? ? (function(j){

? ? li[i].onclick=function()

? ? ? ? ?{

? ? ? ? ? ? ?for(var n=0;n<len;n++)

? ? ? ? ? ? ?{

? ? ? ? ? ? ? ? ?if(j==n)

? ? ? ? ? ? ? ? ?{

? ? ? ? ? ? ? ? ? ? ?li[n].className = "now";

? ? ? ? ? ? ? ? ? ? ?content[n].className = "";

? ? ? ? ? ? ? ? ?}

? ? ? ? ? ? ? ? ?else

? ? ? ? ? ? ? ? ?{

? ? ? ? ? ? ? ? ? ? ?li[n].className = " ";

? ? ? ? ? ? ? ? ? ? ?content[n].className = "hide";

? ? ? ? ? ? ? ? ?}

? ? ? ? ? ? ?}

? ? ? ? ?}

? ? })(i)

? ? }


? ? </script>


0 回復(fù) 有任何疑惑可以回復(fù)我~

if判斷哪把n改成this,因?yàn)槲乙赶虻疆?dāng)前

0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消
JavaScript進(jìn)階篇
  • 參與學(xué)習(xí)       468965    人
  • 解答問(wèn)題       22582    個(gè)

本課程從如何插入JS代碼開(kāi)始,帶您進(jìn)入網(wǎng)頁(yè)動(dòng)態(tài)交互世界

進(jìn)入課程

編程挑戰(zhàn):tab切換

我要回答 關(guān)注問(wèn)題
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)