我写了一个简单的代码/ 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,数据就会丢失。
对这个问题有什么看法吗?也许它真的很明显,我无法看到,因为它真的很晚哈哈。
答案 0 :(得分:1)
检查i < 2
,而不是检查i < noti.length
。或者您可以使用for(var i in noti)
类型循环进行迭代。或者更好的是,如果您只是直接想要通知的数量,只需使用noti.length