计算类元素的未知/动态数组长度

时间:2015-02-23 02:02:45

标签: javascript arrays getelementsbyclassname

我写了一个简单的代码/ userscript来通知我关于网站的变化:

function notifier(){
  setTimeout(function () {       
    location.reload(true); 
  },60000)   
}

function notiCounter() {
    console.log("Counting notifications");
    var noti = document.getElementsByClassName("notification");
    for(var i = 0; i < 2; i++) {
        if(noti[i].innerHTML != undefined) {
            console.log(noti[i].innerHTML);
            notifications++;
            console.log("Notifications: " + notifications);
        }
    }
}

function notification(){ 
    setTimeout(function () {
        notiCounter();
        if(notifications > 0){
          document.title = "(" + notifications + ") new notifcations";
          sound.play();
          }
    notifier();
     },50)
}

notification();

问题是,noti[i]的实际最终数量是未知的/动态的并且一直在变化,因此如果用更高的数字替换i < 2,则for循环最终会进入无限循环 - 如果我选得太低(例如2),如果实际数字高于2,数据就会丢失。

对这个问题有什么看法吗?也许它真的很明显,我无法看到,因为它真的很晚哈哈。

1 个答案:

答案 0 :(得分:1)

检查i < 2,而不是检查i < noti.length。或者您可以使用for(var i in noti)类型循环进行迭代。或者更好的是,如果您只是直接想要通知的数量,只需使用noti.length

中的值