jQuery的。如果声明不能在匿名回调中工作

时间:2014-07-04 00:10:02

标签: javascript jquery callback

为什么运行函数后我的if / else语句没有运行?在运行显示我的网页倒计时的函数后,我正在尝试运行一系列If / Else语句。我试图在调用倒计时函数后运行匿名函数作为回调,但控制台说代码永远不会被执行。所有这一切的主要规定是if / else语句应该在countdown()完成运行倒计时后开始。

基本上,countdown()被执行,但我的代码停在那里,而if / else语句永远不会被执行。为什么?谢谢。

    var countdown = function() {
        $('#notes').hide();
        $('#notes').html('3').fadeIn(1000);
        $('#notes').fadeOut(1000, function() {
            $('#notes').html('2').fadeIn(1000);
            $('#notes').fadeOut(1000, function() {
                $('#notes').html('1').fadeIn(1000);
                $('#notes').fadeOut(1000);
            })
        })
    }



  $('#click').click(function() {
            countdown(function() {
                if((document.getElementById('flats').checked &&                                    
                document.getElementById('naturals').checked && 
                document.getElementById('sharps').checked) {                      
                    genAll(document.getElementById('seconds').value * 1000);
                }

1 个答案:

答案 0 :(得分:1)

不确定您是否重新输入,或者这是否是实际代码,但有几个问题。

1)你的if语句有两个左括号,只有一个闭合。

2)点击回调结束时缺少两个结束括号“}”

3)如果#click元素是一个锚点或提交按钮(可能不是,但我不知道你的HTML是什么样的),你的点击回调可能就是问题。 4)在点击处理程序中,您将函数传递给countdown()作为参数,但倒计时没有任何想法如何处理它。

或许试试这个?

$('#click').click(function () {
    countdown();
    if (document.getElementById('flats').checked && document.getElementById('naturals').checked && document.getElementById('sharps').checked) {
        alert('ok');
    }
});

另外,小提琴:http://jsfiddle.net/HC2Nk/

如果要在现有的倒计时()UI更改发生后执行if语句,则需要使用jQuery UI的fadeOut()函数中提供的回调函数。我建议你更多地破解你的代码。看到这个小提琴的工作更新,我相信完全符合您的要求:http://jsfiddle.net/HC2Nk/2/

你的fadeOut()调用可能会被重构一点,以避免在一个块中的嵌套中重复代码,但它似乎可以正常工作,所以我将离开那个决定并试验你。