在我的文件的超文本标记语言中,我有一个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=“盒子”)中放了一条警告语句,当我执行函数时,它没有响起,即使这个类实际上是盒子。下面列出了我想要使用的两个CS类:
.box {
width: 100px;
height: 100px;
background-color: navy;
}
.boxAlt {
width: 100px;
height: 100px;
background-color: red;
}为什么布尔语句el.className="box“总是返回false?
发布于 2011-06-09 15:25:34
如果current =boxAlt,则在此处指定boxAlt
if (el.className=="box") {
el.className="boxAlt";
}在这里,如果current is boxAlt,你可以切换回来,如果类从一开始就是box,那么它总是正确的。
if (el.className=="boxAlt") {
el.className="box";
}将其更改为类似以下内容:
doAnimation : function() {
el.className = el.className == "box" ? "boxAlt" : "box";
}发布于 2011-06-09 15:13:15
el.className = "box"不是布尔语句,它是一个赋值语句。
el.className == "box"是一个布尔语句。
发布于 2011-06-09 15:15:05
您的代码至少存在三个问题:
我想知道为什么在onmouseover之前有一个;。
然后在将"box"分配给className的if()中使用el.className="box"。使用==进行比较。
最后,el.style.className未定义。
https://stackoverflow.com/questions/6289285
复制相似问题