Javascript 每秒在div中获取图像ID
使用以下代码单击div时,我成功获取了div中所有图像的id:Javascript 每秒在div中获取图像ID,javascript,Javascript,使用以下代码单击div时,我成功获取了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.cal
<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>
函数getimgid(){
var elems=[].slice.call(document.getElementById(“card”);
要素forEach(功能(要素){
elem.onclick=函数(){
var arr=[],imgs=[].slice.call(elem.getElementsByTagName(“img”));
if(imgs.长度){
imgs.forEach(函数(img){
var attrID=img.id;
arr.push(attrID);
警报(arr);
});
}否则{
警报(“未找到图像”);
}
};
});
}
上面的代码工作得很好,当单击卡div时,会发出图像id的警报消息。现在我想要的是在每5秒钟不单击div的情况下运行此功能。我尝试了设置间隔(getimgid,5000),但它不起作用。我应该修改上面的哪部分代码来调用函数而不单击div。如果您有任何帮助,我将不胜感激
您应该这样称呼它:
setInterval (function(){
getimgid();
},5000);
同时删除元素的click事件的绑定
使用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);
问题:您没有在设置间隔中触发单击。您只需每隔5秒重新运行事件绑定
解决方案:在另一个触发单击的函数上设置间隔。如果您根本不想手动单击,也可以删除单击
绑定
更新小提琴:
JS:
调用函数应该是getimgid()
。没有错误,我想elem.onclick部分必须修改或删除,但是每次我这样做都不起作用。@ClydeWinux:如果你能创建小提琴就太好了。在这段代码中,你在哪里调用你的php?你想每5秒触发一次点击吗?问题是你没有在setInterval中触发点击。您仅每5秒重新运行一次事件绑定。我已设置该div没有单击事件。当页面加载时,每5秒调用一次函数getimgid()。
var t;
function trigger() {
var elems = [].slice.call(document.getElementsByClassName("card"));
elems.forEach(function (elem) {
elem.onclick();
});
}
t = setInterval(trigger, 5000);