Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法在删除时获得正确的元素计数_Javascript_Jquery_Jquery Ui - Fatal编程技术网

Javascript 无法在删除时获得正确的元素计数

Javascript 无法在删除时获得正确的元素计数,javascript,jquery,jquery-ui,Javascript,Jquery,Jquery Ui,我注意到,在多次尝试获取已删除元素的计数时,它总是返回比找到的数目少一个的值,但是如果我通过Chromes控制台尝试相同的命令,我会得到propper响应 我假设这个脚本运行时DOM没有更新,所以我抛出了一个超时/重试机制,但仍然没有用。我错过了什么 预期结果大小=10 实际结果大小=9 代码 var asmCount = 0; function storeValues(values, tryNumber){ var size = values.length, tryN

我注意到,在多次尝试获取已删除元素的计数时,它总是返回比找到的数目少一个的值,但是如果我通过Chromes控制台尝试相同的命令,我会得到propper响应

我假设这个脚本运行时DOM没有更新,所以我抛出了一个超时/重试机制,但仍然没有用。我错过了什么

预期结果大小=10

实际结果大小=9

代码

var asmCount = 0;

function storeValues(values, tryNumber){
    var size = values.length,
        tryNumber = (!isNaN(tryNumber)) ? tryNumber : 1
        ;

    console.log('full boat:' + size + ', try #'+ tryNumber + ' ' + typeof(tryNumber));
    if(tryNumber > 60){
        console.log('too many tries');
        return;
    }

    if(size < 10){
        console.log('missing entries');
        tryNumber = tryNumber + 1;
        setTimeout(storeValues($('.asm-ranking .receiver .asm-value'), tryNumber) , 500);
    } else if(size > 10){
        console.log('too many entries, something broke');
    } else {
        console.log('just right, lets do this shit.');
        //$.each(values, function(k,v){ console.log($(v).data('id'));});
    }   
}

$('.asm-ranking .receiver').droppable({
    drop: function(event,ui){
        var _self = this,
            receiverCount = $('.asm-ranking .receiver li').length
        ;
        //console.log('event',event);
        //console.log('ui', ui);
        asmCount++;
        console.log(asmCount + ' / ' +  receiverCount);
        if(receiverCount == asmCount){
            storeValues($('.asm-ranking .receiver .asm-value'), 1); // give DOM time to catch up, then store
        }
    }
});
var asmCount=0;
函数存储值(值,tryNumber){
变量大小=value.length,
tryNumber=(!isNaN(tryNumber))?tryNumber:1
;
console.log('满船:'+size+',try#'+tryNumber+''+typeof(tryNumber));
如果(tryNumber>60){
log(“尝试次数太多”);
返回;
}
如果(尺寸<10){
console.log(“缺少条目”);
tryNumber=tryNumber+1;
setTimeout(storeValues($('.asm ranking.receiver.asm value'),tryNumber),500);
}否则,如果(尺寸>10){
log('条目太多,有东西坏了');
}否则{
log('刚刚好,让我们做这个狗屎');
//$.each(值,函数(k,v){console.log($(v.data('id'));});
}   
}
$('.asm ranking.receiver')。可拖放({
drop:函数(事件、用户界面){
var_self=这个,
收款人计数=$('.asm ranking.receiver li')。长度
;
//console.log('event',event);
//console.log('ui',ui);
asmCount++;
console.log(asmCount+'/'+receiverCount);
如果(收款人计数==asmCount){
storeValues($('.asm ranking.receiver.asm value'),1);//给DOM一点时间赶上进度,然后存储
}
}
});

出于某种原因,当我用documentready包装jQuery符号时

$(document).ready(function{ ... })

它按预期工作。

我不太理解您的代码,但通常在DOM中存储内容是不好的。jQuery这么做并不意味着它是个好主意。这里还有几个
设置时间
,您确定您的异步性处理正确吗?