xqz313
xqz313

Reputation: 811

Counting unknown/dynamic array length of class element

I wrote a simple code/userscript to notify me about changes on a webiste:

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();

The problem is, that the actual final number of noti[i] is unknown/dynamic and changes all the time, so if i < 2 is replaced with a higher number the for loop ends up in an infinite loop - and if I pick it too low (2 for example), data will gets lost if the actual number is above 2.

Any idea about that problem? Maybe it's really obvious and I can't see, as it is really late haha.

Upvotes: 0

Views: 94

Answers (1)

Harvtronix
Harvtronix

Reputation: 854

Rather than checking for i < 2, check for i < noti.length. Or you can iterate through using a for(var i in noti) type loop. Or better yet, if you just want the number of notifications directly, just use the value in noti.length

Upvotes: 1

Related Questions