无法在div jquery中计算图像

时间:2015-04-24 09:02:00

标签: jquery html image count

我正在尝试计算 div 中的所有 img 。 要将图像添加到 div ,我使用一个如下所示的jquery函数:

function AddImages(namearray, amount, speed) {      
...

            }, speed)

所有图像都正确添加到div元素中。 console.log。 在此之后,我想用这个来计算图像标签的数量:

var count = $("#myDiv").find('img').length;

OR

var count = document.getElementById("#myDiv").getElementsByTagName("img").length

虽然在计数之前执行了AddImages()函数,但这并没有奏效。

有没有人对此有所了解?

1 个答案:

答案 0 :(得分:2)

问题是图像是在多个帧的过程中添加的,但是函数立即返回,因此尚未添加任何图像来计算。

您可以将回调添加到AddImages(首选),以便您知道图像 的所有内容都已添加,或者只是在检查之前等待一段时间(这是实际上你用调试器做了什么。)

e.g。

var i = 0;
var uniekeid = 0;
function plaatsRandomPion(naamarray, aantal, snelheid, callback) {
    setTimeout(function () {
        uniekeid = uniekeid + 1;
        var xpictures = Math.floor(sizepictures * Math.random())
        var item = $("<img src='" + naamarray[xpictures] + "' id='" + uniekeid + "' />").hide().fadeIn();
        $('#depionnen').append(item);
        console.log(item);

        i++;
        if (i < aantal) {
            plaatsRandomPion(naamarray, aantal, snelheid, callback);
        }
        else {
            // We are done... callback to let the caller know
            // Note: check whether the callback exists first
            callback && callback();
        }
    }, snelheid)

}

并且这样打电话:

plaatsRandomPion(pictures, 20, 100, function(){
    var count = $("#box").find('img').length;
    // Now the count will be set!
});

JSFiddle: https://jsfiddle.net/TrueBlueAussie/kcffgq26/4/

一个更“现代”的解决方案是使用jQuery承诺,但现在对于这个简单的问题来说太过分了。

注意:在函数外部使用全局设置(例如uniekeid&amp; i)通常是不可重复使用的代码的标志。您可以通过简单地每次使用slice减少数组并递归传递较短的数组直到它为空来获得相同的效果,没有计数器。由于您似乎想要随机选择图像,我建议先对数组进行随机排序(以避免重复图像)。