为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

繁星点点滴滴 2023-04-20 10:26:00
问题是什么?我声明了变量 nvar n = 0;while (true) {  var comment = document.getElementsByClassName('wall_reply_text')[n].textContent;    if (comment.indexOf("публикации") == 0) {    alert(comment);  }    n++;}
查看完整描述

2 回答

?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

wall_reply_text最可能的解释是当这段代码运行时没有类名的元素,所以document.getElementsByClassName('wall_reply_text')返回一个空数组。当您尝试访问该空数组中的索引 0 时,您会得到undefined,因此在尝试访问时会出现错误undefined.textContent



查看完整回答
反对 回复 2023-04-20
?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

如果没有元素,则需要中断


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>


查看完整回答
反对 回复 2023-04-20
  • 2 回答
  • 0 关注
  • 73 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信