“uncatch TypeError: undefined is not a function” 在使用 str.ind
"Uncaught TypeError: undefined is not a function" while using str.indexOf function
我在鞋底收到这条消息: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.search
替换nav_e.indexOf
,但它不会改变任何东西
如果您的应用程序中遇到这种类型的错误 - undefined is not a function
,它通常意味着一件事:您正在尝试调用某个对象的方法,相信该对象是X
类型,而实际上它是Y
类型。
这种情况特别有趣,因为它说明了元素(DOM(与其相应的表示(即字符串(之间的普遍混淆。更具体地说,这些台词...
var nav = document.getElementsByClassName('navigation');
var nav_e = nav[0];
。将使用 HTMLELement 填充nav_e
,这是第一个带有 navigation
类的类。
(顺便说一句,使用 querySelector('.navigation')
更容易获得该元素(
现在,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
如果找不到元素。
indexOf 方法适用于数组。在这里,您将 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)
- str.split(someString).join(someOtherString)是否等效于替换
- 对象中的str.replacement()
- 如何使用 num.toString 和 str.split 查找整数的最后一位数字
- 需要一些str.indexOf帮助javascript
- 在包含流的html上用javascript动态替换str
- 为什么 +str 在 JS 中比 str*1 更好地将字符串转换为数字
- JavaScript:控制台的意外输出.log('str' + int + int)
- 正则表达式如何正确使用来检查 str
- “JSON.parse(str)”返回“意外令牌c”,但str是一个字符串
- 输入str替换
- 在文本区域中,输入用jquery str.replacement()替换哭泣的smiley live的单引号
- 如何在javascript中创建看起来像点符号的自定义函数?例如str.getFirstIndex();
- 等价于str.decode('字符串转义')
- 操作(str.replace)通过自动完成返回的数组数据
- jquery ajax 在 str.rereplace 之后不起作用
- JS .replace(str, str):如何获取参数 1 中的变量并全局工作
- str.charAt(5) vs str[5] in Javascript
- Python - 从服务器获取数据 (ajax) - 'str' 对象不是可调用的错误
- KDE 等离子体 ind autorefresh.
- “uncatch TypeError: undefined is not a function” 在使用 str.ind