2011-06-09 54 views
0

在我的HTML文件中我有一個ID爲「divNavyBox」的div。代碼如下。爲什麼這個html元素的類信息沒有被Javascript訪問?

<div id="divNavyBox" class="box" onmouseover="animated.doAnimation()"></div> 

請注意,一旦鼠標懸停在它上面,它將執行var animated的doAnimation()。

var animated = { 

el : document.getElementById("divNavyBox"), 

doAnimation : function() { 
    if (el.className=="box") { 

     el.className="boxAlt"; 
    } 
    if (el.className=="boxAlt") { 
     el.className="box"; 
    } 

} 

}; 

我希望它執行doAnimation方法後,在這兩個cs類之間切換。但是,它什麼都不做。我在if(el.className =「box」)裏面放了一個alert語句,當我執行這個函數時它沒有響起來,儘管這個類真的是box。我想要使用的兩個CS類被列出如下:

.box { 

    width: 100px; 

    height: 100px; 

    background-color: navy; 

} 
.boxAlt { 
width: 100px; 
height: 100px; 
background-color: red; 
} 

爲什麼布爾聲明el.className = 「盒子」 回頭率假

回答

2

這裏您分配boxAlt如果電流=

if (el.className=="box") { 
    el.className="boxAlt"; 
} 

在這裏你切換回來,如果當前是boxAlt該類是否從一開始就一直這是百達真

if (el.className=="boxAlt") { 
    el.className="box"; 
} 

改變它的東西,如:

doAnimation : function() { 
    el.className = el.className == "box" ? "boxAlt" : "box"; 
} 
0

el.className = "box"不是布爾語句,它是一個分配

el.className == "box"是布爾語句?。

0

還有您的代碼至少有三個問題:

我想知道爲什麼在onmouseover之前有;

然後,您在if()中使用el.className="box",其將"box"指定爲className。使用==進行比較。

最後,el.style.className未定義。

+0

感謝您的建議。我解決了這三個問題,他們現在被放入原始帖子。即使我解決了這三個問題,doAnimation函數仍然不會更改divNavyBox的類。 – idungotnosn 2011-06-09 07:17:56

+0

將'alert(typeof el)'添加爲'doAnimation'中的第一個命令。它可能是'undefined' – 2011-06-09 07:24:23

相關問題