2015-02-23 4 views
0

Я написал простой код/​​userscript уведомить меня об изменениях на 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(); 

Проблема заключается в том, что фактическое конечное число noti[i] неизвестна/динамический и изменяется все время, поэтому, если i < 2 заменяется на большее число, цикл for заканчивается в бесконечном цикле - и если я его выберу слишком низко (например, 2), данные будут потеряны, если фактическое число превысит 2.

Есть идеи по поводу этой проблемы? Может быть, это действительно очевидно, и я не вижу, так как это действительно поздний ха-ха.

ответ

1

Вместо проверки на i < 2, проверьте на i < noti.length. Или вы можете выполнить итерацию с помощью цикла for(var i in noti). Или еще лучше, если вы просто хотите получить количество уведомлений напрямую, просто используйте значение в noti.length

+0

Ой, я не думал, что это сработает так просто, но это так. Спасибо, тонны! – xqz313

Смежные вопросы