为什么Javascript无法访问此html元素的类信息?

时间:2011-06-09 07:10:09

标签: javascript

在我的HTML文件中,我有一个id为“divNavyBox”的div。代码如下。

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

请注意,一旦鼠标悬停在它上面,它会从var动画执行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”)中放了一个警告声明,当我执行该函数时它没有响起,即使该类真的是IS框。我想要使用的两个CS类列出下面:

.box {

    width: 100px;

    height: 100px;

    background-color: navy;

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

为什么布尔语句el.className =“box”会一直返回false?

3 个答案:

答案 0 :(得分: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";
}

答案 1 :(得分:0)

el.className = "box"不是布尔语句,而是一个赋值。

el.className == "box"是一个布尔语句。

答案 2 :(得分:0)

您的代码至少有三个问题:

我想知道为什么在;之前有onmouseover

然后,您在el.className="box"中使用if()"box"className分配给==。使用el.style.className进行比较。

最后,{{1}}未定义。