繁体   English   中英

无法读取 JavaScript 中未定义的属性“textContent”

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM