[英]Cannot read property 'textContent' of undefined in JavaScript
问题是什么? 我声明了变量 n
var n = 0;
while (true) {
var comment = document.getElementsByClassName('wall_reply_text')[n].textContent;
if (comment.indexOf("публикации") == 0) {
alert(comment);
}
n++;
}
最可能的解释是,当此代码运行时,没有类名为wall_reply_text
元素,因此document.getElementsByClassName('wall_reply_text')
返回一个空数组。 当您尝试访问该空数组中的索引 0 时,您会得到undefined
,因此在尝试访问undefined.textContent
时会出现错误。
如果没有元素,你需要打破
var n = 0, comment="" while (true) { const div = document.getElementsByClassName('wall_reply_text')[n] if (div) comment = div.textContent; else break if (comment.indexOf("публикации") == 0) { console.log(n,comment); } n++; }
<div class="wall_reply_text">1</div> <div class="wall_reply_text">публикации</div> <div class="wall_reply_text">3</div> <div class="wall_reply_text">4</div>
这是一个更优雅的方式
[...document.querySelectorAll('.wall_reply_text')] .map(div => div.textContent) .forEach((comment,i) => { if (comment.indexOf("публикации") == 0) { console.log(i,comment); } })
<div class="wall_reply_text">1</div> <div class="wall_reply_text">публикации</div> <div class="wall_reply_text">3</div> <div class="wall_reply_text">публикации</div>
如果您只需要一个索引,则另选
const comments = [...document.querySelectorAll('.wall_reply_text')] .map(div => div.textContent) console.log(comments.indexOf("публикации"))
<div class="wall_reply_text">1</div> <div class="wall_reply_text">публикации</div> <div class="wall_reply_text">3</div> <div class="wall_reply_text">4</div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.