JavaScript DOM依赖于视口导致奇怪的结果

时间:2015-08-11 18:08:49

标签: javascript arrays function google-chrome dom

我正在尝试在HTML文档中提取的另一个字符串中查找字符串的出现位置。该页面是一个SNMP监视器,但我们过去一直遇到CTRL + F的问题,因为它只想在浏览器的当前视口中找到该字符串。我尝试解决这个问题并且不必手动查看内容就是编写脚本。

这里的问题是,似乎docHTML变量只能容纳如此多的数据,而其他任何东西都被截断。我已经浏览了Stack Overflow,发现我的字符串大小比其他人尝试的要少得多,所以这应该不是问题。

“ipArray”变量中的所有IP地址确实存在于不同位置的页面上,当我自己查看时,它们位于docHTML变量中。当我在页面中的各个点(依赖于视口)运行doSearch函数时,它给出了不同的结果。

我真的不知道这里出了什么问题,因为代码有时会起作用,而不是其他时候。我的目标是让代码遍历整个页面并查找所有缺失的IP并将其添加到阵列中,以便我们可以继续添加它们,而不必将电子表格上的490个IP与监视实用程序中的490个IP进行比较

提前致谢!

var docHTML = document.documentElement.outerHTML;
var missing = [];

function doSearch(text) {
        if (docHTML.search(text) == -1){
            missing.push(text);
        }
}

var ipArray = [
"192.168.64.236",
"192.168.64.237",
"192.168.64.238",
"192.168.64.10",
"192.168.64.11",
"192.168.64.12",
"192.168.65.40",
"192.168.65.47"
];

var Total = ipArray.length;

for(i=0;i<Total;i++){
    doSearch(ipArray[i]);
}

console.log("Missing IP's: " + (Total - missing.length));
console.log(missing);

2 个答案:

答案 0 :(得分:0)

这是解决方案,而不是更改,只是对您的日志记录语句进行了调整。你正在印刷&#34;总失踪&#34;这是错的。我们需要的是缺少的数量 -

var docHTML = document.documentElement.outerHTML;
var missing = [];

function doSearch(text) {
        if (docHTML.search(text) == -1){
            missing.push(text);
        }
}

var ipArray = [
"69.171.224.11",
"199.59.149.230",
"174.121.194.34",
"209.200.154.225",
"69.174.244.50",
"67.201.54.151"
];

var Total = ipArray.length;

console.log(Total);

for(i=0;i<Total;i++){
    doSearch(ipArray[i]);
}

console.log("Missing IP's: " + (missing.length)); /***HERE***/
console.log(missing);

除此之外,整个代码按预期为我工作。让我知道这个问题还有什么问题。很乐意提供帮助。

答案 1 :(得分:0)

代码按预期工作。问题恰好是它运行的SNMP监视器。当您滚动时,页面上的所有内容似乎都会被POST请求加载。之前和之后似乎抓住了一些为什么我能够在代码中看到它而不是在执行时。