我在cosole中收到此消息:Uncaught TypeError: undefined is not a function
它确实让我发疯了!我没有看到任何错误,但也许其他人可以帮助我。
var nav = document.getElementsByClassName('navigation');
console.log(nav);
console.log(nav[0]);
var nav_e = nav[0];
//var searched = nav[0].search('<a href="forumdisplay.php?fid=11">Deck - Lab</a>');
if (nav_e.indexOf('<a href="forumdisplay.php?fid=11">Deck - Lab</a>') > -1) {
var list = document.getElementsByClassName('post_body');
var xmlhttp = new XMLHttpRequest();
var pbelement_encoded = '';
var pbelement = ''
for (i = 0; i < list.length; i++) {
var element = list[i];
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
var result = xmlhttp.responseText;
var result2 = result.replace(/fhvjgvghepoapeoaareupo/g,'');
element.innerHTML = (xmlhttp.responseText.replace(/fhvjgvghepoapeoaareupo/g,''));
}
}
pbelement_encoded = encodeURIComponent(element.innerHTML);
pbelement = 'pb='+pbelement_encoded;
//alert(pbelement);
xmlhttp.open("POST","http://theepicsurge.altervista.org/PostAnalyzer.php",false);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
xmlhttp.send(pbelement);
}
}
}
第一个if
语句中出现错误:if (nav_e.indexOf('<a href="forumdisplay.php?fid=11">Deck - Lab</a>') > -1) {
我也尝试用nav_e.indexOf
替换nav_e.search
,但它不会改变任何内容
答案 0 :(得分:1)
如果您的应用程序中出现此类错误 - undefined is not a function
,通常意味着一件事:您正在尝试调用某个对象的方法,认为此对象属于X
类型,实际上它是Y
类型。
这种情况特别有趣,因为它说明了元素(DOM)和它们相应的表示(即字符串)之间的流行混淆。更具体地说,这些线......
var nav = document.getElementsByClassName('navigation');
var nav_e = nav[0];
...将使用HTMLELement填充nav_e
,这是navigation
类的第一个。
(使用querySelector('.navigation')
,btw更容易获取该元素
现在,nav_e
有一些内容 - 但它不是一个字符串,并且它本身和原型链上都没有indexOf
属性。为了实现您的原始想法,代码应该实际上是这样编写的:
if (nav_e.innerHTML.indexOf('<a href="forumdisplay.php?fid=11') !== -1) { /* */ }
但是,还有一个更好的想法:重用DOM方法来查找相应的元素。像这样:
if (nav_e.querySelector('a[href="forumdisplay.php?fid=11"]')) { /* ... */ }
...如果找不到元素,则querySelector
方法返回null
。
答案 1 :(得分:0)
indexOf方法适用于array.and这里你在数组的第一个元素上应用indexOf方法而不是在数组var nav_e = nav[0];
上,所以替换这个代码:
if (nav_e.indexOf('<a href="forumdisplay.php?fid=11">Deck - Lab</a>') > -1)
到
if (nav.indexOf('<a href="forumdisplay.php?fid=11">Deck - Lab</a>') > -1)