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

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

大家幫我看看我的代碼問題在哪里?是JS那部分的問題

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
#bl{
margin: 0;
padding:0 ;
list-style-type: none;

}
#dh li{
float: left;
? ? ? ? ? ? ? ?width: 60px;
? ? ? ? ? ? ? ?border-color:peachpuff ;
? ? ? ? ? ? ? ?border-style: solid;
? ? ? ? ? ? ? ?text-align: center;
? ? ? ? ? ? ? ?background-color: #FFDAB9;
}
#bl li a{
display: block;
padding: 0.3em;
color: darkblue;
}
#bl li a:hover,#bl li a:focus
{
background-color: deepskyblue;
color:aliceblue ;
}
#clear{
clear:both ;
}
.content{
width: 260px;
? ?height: 270px;
? ?background-color:azure;
? ?margin-top: ;
? ?float: left;
? ? ? ?display:none;
? ?}
.content1{
display: none;
}
</style>

</head>
<body>
<div id="dh">
<ul id="bl">
<li ><a>房產</a></li>
<li><a>家居</a></li>
<li><a>二手房</a></li>
</ul>
</div>
<div id="clear"></div>

<div class="content">
<p>
275萬購昌平鄰鐵三居 總價20萬買一居
? ?200萬內購五環三居 140萬安家東三環
? ?北京首現零首付樓盤 53萬購東5環50平
? ?京樓盤直降5000 中信府 公園樓王現房
</p>
</div>

?<div class="content">
<p>
40平出租屋大改造 美少女的混搭小窩
? ? 經典清新簡歐愛家 90平老房煥發新生
? ? 新中式的酷色溫情 66平撞色活潑家居
? ? 瓷磚就像選好老婆 衛生間煙道的設計
</p>
</div>

<div class="content">
<p>
通州豪華3居260萬 二環稀缺2居250w甩
? ? 西3環通透2居290萬 130萬2居限量搶購
? ? 黃城根小學學區僅260萬 121平70萬拋!
? ? 獨家別墅280萬 蘇州橋2居優惠價248萬
</p>
</div>
</body>
<script type="text/javascript">
var aa=document.getElementsByTagName("a");
?for(var i=0;i<aa.length;i++){
?
?aa[i].onmouseover=function(){
? document.getElementsByClassName("content")[i].style.cssText="display: block;"; ?
?}
?
?aa[i].onmouseout=function(){
? document.getElementsByClassName("content1")[i].style.cssText="display: none;";
?}
?}
</script>
</html>

一直運行不了,顯示"Uncaught?TypeError:?Cannot?read?property?'style'?of?undefined"


正在回答

1 回答

?aa[i].onmouseover=function(){
? document.getElementsByClassName("content")[i].style.cssText="display: block;"; ?
?}
?
?aa[i].onmouseout=function(){
? document.getElementsByClassName("content1")[i].style.cssText="display: none;";
?}

請仔細看一下這兩句,你會發現按鈕所綁定的事件執行的代碼是怎樣的,這個document.getElementsByClassName("content")[i].style.cssText="display: block;"; ? 所以每一次觸發事件時,就會把classname為"content"的節點數組里的i取出來對吧!!重點是這個i,i在執行完for循環后就一直是3(js里for聲明的變量不僅在for里生效),所以會執行document.getElementsByClassName("content")[3],我們知道這個數組長為3,所以只有0-2,所以style自然是undefined。

修改代碼:

?for(var i=0;i<aa.length;i++){

? aa[i].value = i;

?aa[i].onmouseover=function(){

? document.getElementsByClassName("content")[this.value].style.cssText="display: block;"; ?

?}

?

?aa[i].onmouseout=function(){

? document.getElementsByClassName("content")[this.value].style.cssText="display: none;";

?}

我們把每一個節點的value設為對應i,將執行代碼i改為this.value,由于this.value并不會隨i變化而變化并且能代表對應的節點所以能放心使用。(PS:注意把onmouseout里content1改回content)

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

慕田峪6924496 提問者

非常感謝!
2016-08-05 回復 有任何疑惑可以回復我~
#2

qq_yEs先生_53591812

大神,想問下這個最后一句執行代碼什么意思?沒看明白
2016-08-08 回復 有任何疑惑可以回復我~
#3

水里有條魚 回復 qq_yEs先生_53591812

document.getElementsByClassName("content")[this.value].style.cssText="display: none;";嗎 把content節點數組里的位置為this.value的節點的css樣式display內容改為none(隱藏內容)
2016-08-08 回復 有任何疑惑可以回復我~
#4

qq_yEs先生_53591812 回復 水里有條魚

還沒理解為什么document.getElementsByClassName("content")[this.value].style.cssText="display: block;";document.getElementsByClassName("content")[this.value].style.cssText="display: none;"這兩句可以實現選項卡切換的效果?
2016-08-09 回復 有任何疑惑可以回復我~
#5

水里有條魚 回復 qq_yEs先生_53591812

當我鼠標移到1時顯示1,離開1時,隱藏1. 假如1切換到2 順序是這樣的 移到1 -> 離開1 -> 移到2 (顯示1 -> 隱藏1 -> 顯示2)
2016-08-11 回復 有任何疑惑可以回復我~
#6

qq_yEs先生_53591812 回復 水里有條魚

明白了 感謝!
2016-08-11 回復 有任何疑惑可以回復我~
查看3條回復

舉報

0/150
提交
取消

大家幫我看看我的代碼問題在哪里?是JS那部分的問題

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

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

幫助反饋 APP下載

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

公眾號

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