每秒在div中获取图像ID

时间:2014-01-17 10:09:09

标签: javascript

点击以下代码时,我成功获取了div中所有图片的ID:

<script type="text/javascript">
function getimgid(){
var elems = [].slice.call( document.getElementById("card") );
elems.forEach( function( elem ){
elem.onclick = function(){
    var arr = [], imgs = [].slice.call( elem.getElementsByTagName("img") );
    if(imgs.length){
        imgs.forEach( function( img ){
            var attrID = img.id;
            arr.push(attrID);
        alert(arr);
        });
    } else {
        alert("No images found.");
    }
};
});
}
</script>

上述代码运行正常,点击 div时会显示图片ID的提示消息。现在我想要的是运行这个功能,而不是每5秒钟点击一次div。我尝试过 setInterval(getimgid,5000),但它不起作用。我应该修改上面代码的哪一部分来调用函数而不单击div。任何帮助将不胜感激。

JSFiddle

3 个答案:

答案 0 :(得分:2)

你应该这样称呼它:

setInterval (function(){
getimgid();
},5000);

还删除了元素的click事件的绑定。

<强> Working Fiddle

答案 1 :(得分:0)

使用elem.click()触发点击

function getimgid() {
    var elems = [].slice.call(document.getElementsByClassName("card"));
    elems.forEach(function (elem) {
        elem.onclick = function () {
            var arr = [],
                imgs = [].slice.call(elem.getElementsByTagName("img"));
            if (imgs.length) {
                imgs.forEach(function (img) {
                    var attrID = img.id;
                    arr.push(attrID);
                    alert(arr);
                });
            } else {
                alert("No images found.");
            }
        };
        elem.click();
    });
}
setInterval(getimgid, 1000);

DEMO

答案 2 :(得分:0)

问题:您没有触发setInterval中的点击。您只需每5秒重新运行一次事件绑定。

解决方案:在另一个触发点击的功能上设置间隔。如果您根本不想手动点击,请完全删除click绑定。

更新了小提琴http://jsfiddle.net/abhitalks/3Dx4w/5/

JS

var t;

function trigger() {
        var elems = [].slice.call(document.getElementsByClassName("card"));
    elems.forEach(function (elem) {
        elem.onclick();
    });
}

t = setInterval(trigger, 5000);