所以,我需要做的是有一些东西在页面上反复淡出,直到'reset'按钮被按下(不需要的进一步信息)。
所以,我在页面上有一个完全不透明的段落元素,id为'fail'。在触发某个事件后,该元素需要反复淡出。
所以,我这样做:
$("#fail").show(3000, blink);
与blink功能看起来如下:
function blink() {
var id;
if(divID == "lost"){
id = "#fail"
}else if(divID = "won"){
id = "#win";
}
$(id).fadeOut().fadeIn(blink);
}
if语句决定要闪烁哪个段落元素。然而,当我点击上面的第一行代码时,什么也没有发生。知道为什么吗?
看起来您在第二次比较时忘记了=
。该语句将divID
分配给"won"
,然后将其评估为布尔值(它不是false, NULL等,因此它始终为真,id
将始终为"#win"
)。我在下面为你修复了它:
function blink() {
var id;
if(divID == "lost"){
id = "#fail"
} else if (divID == "won") {
id = "#win";
}
$(id).fadeOut().fadeIn(blink);
}
现在这可能只是一个打字错误,如果是的话,那么我需要知道divID
变量是什么,以及它被设置在哪里来帮助你。
可能的解决方案:
我不太确定你的应用程序中发生了什么,所以这可能是错误的。话虽如此,为什么不做两个blink函数,一个用于#win
,一个用于#fail
?那么你就不需要在闪烁函数内的if
语句,这似乎是你的问题的根源。
或者,您可能想尝试使用CSS: text-decoration: blink;
。但我不确定这对你是否有用。
把你的逻辑缩短一点…假设divID被正确设置,这可以工作:
$("#fail").show(3000, blink);
function blink() {
var id;
(divID == "lost") ? id="#fail" : id="#win";
$(id).fadeOut().fadeIn(blink);
}
小提琴:http://jsfiddle.net/uYHG5/
段落元素无法显示,因为在加载窗口时,我将它们设置为完全不透明。我认为,因为(这可能是错误的)淡出和淡出切换不透明度,所以这不会是一个问题。
不管怎样,一开始我没有将它们设置为不透明,而是调用
$("p").hide();
这样当我调用show时,它就会显示并开始切换开关,直到游戏被重置。谢谢大家的建议。