亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

正在回答

1 回答

不是。是你id的問題,注意到使用了一個for循環為每個p綁定了點擊事件,在for循環結束后,每個p標簽已經綁定了事件了。但是注意到你的i在內存中的值已經是3了,所以你每次都沒有效果,可以在每個節點上綁定一些數據。幫你修改了一個??梢詤⒄找幌拢瑴y試過了是可以的

<!DOCTYPE?html>
<html?lang="en">
<head>
????<meta?charset="UTF-8">
????<title>層疊下拉菜單</title>
????<style?type="text/css">
?*{
????????????margin:0;padding:?0;font-size:?20px;list-style:?none;text-decoration:?none;color:?black;
?}
????????.menu{
????????????width:?210px;margin:50px?auto;border:?1px?solid?#ccc;
?}
????????.menu?p{height:?25px;line-height:?25px;font-weight:?bold;background:?:#eee;border-bottom:?1px?solid?#ccc;cursor:?pointer;padding-left:?5px;background:?#eee;}
????????ul{display:?none;}
????????.menu?li{height:?24px;line-height:?24px;padding-left:?5px;}
????</style>
????<script?type="text/javascript">
?window.onload=function(){
????????????var?p=document.getElementById('menu').getElementsByTagName('p');
?var?ul=document.getElementById("menu").getElementsByTagName("ul");
?for?(var?i?=?0;?i?<?p.length;?i++)?{
????????????????p[i].id?=?i;
?p[i].onclick=function(){
????????????????????for?(var?j?=?0;?j?<?ul.length;?j++)?{
????????????????????????if?(j==this.id)?{
????????????????????????????ul[j].style.display='block';
?}
????????????????????????else{
????????????????????????????ul[j].style.display?=?"none";
?}
????????????????????}
????????????????}
????????????}
????????}
????</script>
</head>
<body>
<div?class="menu"??id="menu">
????<div>
????????<p>Web前端</p>
????????<ul>
????????????<li><a?href="#">?JavaScript</a></li>
????????????<li>Div+Css</li>
????????????<li><a?href="#">jQuery</a></li>
????????</ul>
????</div>
????<div>
????????<p>后臺腳本</p>
????????<ul>
????????????<li><a?href="#">PHP</a></li>
????????????<li>ASP?.net</li>
????????????<li><a?href="#">JSP</a></li>
????????</ul>
????</div>
????<div>
????????<p>前端框架</p>
????????<ul>
????????????<li><a?href="#">Extjs</a></li>
????????????<li>Esspress</li>
????????????<li><a?href="#">YUI</a></li>
????????</ul>
????</div>
</div>
</body>
</html>

在每個節點上綁定了id,這樣就可以正確的得到了索引。

1 回復 有任何疑惑可以回復我~
#1

qq_慕斯卡4334448 提問者

大神 測試確實可以通過 但兩個循環為什么不能直接對等,還要用P[i].id ,在下小白 理解有點吃力 我該注意什么
2016-12-13 回復 有任何疑惑可以回復我~
#2

串豬神 回復 qq_慕斯卡4334448 提問者

因為注意到p[i]只是引用了數組里的某個變量而已,通過for循環后i值是已經改變了,你通過onclick監聽點擊事件是沒辦法直接讀取到這是第幾個i的,一般都會通過在節點上進行標記。其實就是i的值變化的問題,你可以在onclick里面console.log(i);你看下就知道了,每次打印出來的都是3,因為for循環結束的時候監聽事件設置完,i的值在內存中變化成3了。所以其實就相當于你的每次點擊i都是3、
2016-12-13 回復 有任何疑惑可以回復我~
#3

qq_慕斯卡4334448 提問者 回復 串豬神

明白,那在節點上只是進行標記的話 id 也是可以換成其他的嘍,一直讓我想到body中的標簽···
2016-12-13 回復 有任何疑惑可以回復我~
#4

串豬神 回復 qq_慕斯卡4334448 提問者

是的,可以換成其他屬性,像很多框架都會自定義一個屬性在上面,比如data-xxx-xxx = 'xxx'這樣子來做標記,即支持了h5,也可以對節點做判斷,也不會干擾到其他節點
2016-12-13 回復 有任何疑惑可以回復我~
#5

qq_慕斯卡4334448 提問者 回復 串豬神

感謝回答與回復!
2016-12-13 回復 有任何疑惑可以回復我~
查看2條回復

舉報

0/150
提交
取消

求解?是循環的問題嗎

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號