在JQuery中出现问题。有任何想法吗?

时间:2013-04-09 18:22:20

标签: jquery fadein fade fadeout

所以,我需要做的是在页面上反复淡入淡出,直到按下“重置”按钮(不需要进一步的信息)。

所以,我在页面上有一个完全不透明的段落元素,id为'fail'。触发某个事件后,该元素需要反复淡入淡出。

所以,我这样做:

 $("#fail").show(3000, blink);

闪烁功能如下所示:

function blink() {
    var id;
    if(divID == "lost"){
     id = "#fail"
    }else if(divID = "won"){
     id = "#win";
    }

 $(id).fadeOut().fadeIn(blink);
}

其中的if语句是确定要闪存的段落元素。但是,当我点击上面的第一行代码时,没有任何反应。有什么想法吗?

3 个答案:

答案 0 :(得分:1)

您的第二次比较似乎忘记了=。该语句将divID分配给"won",然后将其评估为布尔值(非假,NULL等等,因此它始终为true,id将始终为"#win" )。我在下面为你修好了:

function blink() {
    var id;
    if(divID == "lost"){
        id = "#fail"
    } else if (divID == "won") {
        id = "#win";
    }

    $(id).fadeOut().fadeIn(blink);
}

现在这可能只是一个错字,如果是,那么我需要知道divID变量是什么,以及它设置的位置可以帮助你。

可能的解决方案:

我不确定你的应用程序中发生了什么,所以这可能是偏离基础的。话虽如此,为什么不制作两个闪烁函数,一个用于#win,另一个用于#fail?那么你就不需要在闪烁函数中使用if语句,这似乎是你问题的根源。

或者,您可能想尝试使用CSS:text-decoration: blink;。不过,我不确定它是否适合你。您可以向我们提供有关您的申请的更多信息,我们能够更好地回答;)。

答案 1 :(得分:0)

稍微缩短你的逻辑...假设divID设置正确,这可行:

$("#fail").show(3000, blink);

function blink() {
    var id;

    (divID == "lost") ? id="#fail" : id="#win";
    $(id).fadeOut().fadeIn(blink);
}

小提琴:http://jsfiddle.net/uYHG5/

答案 2 :(得分:0)

段落元素未能显示,因为在加载窗口时,我将它们设置为完全不透明。我认为,因为(这可能是错误的)fadeIn和Out切换了不透明度,所以这不会是一个问题。

无论如何,我没有把它们设置为不透明,而是打电话给

$("p").hide();

因此,当我打电话给show时,它会被显示并开始打开和关闭,直到游戏重置为止。感谢大家的所有提示。