首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JavaScript:未捕获长度:无法读取在prac.js:13处未定义的属性“”TypeError“”

JavaScript:未捕获长度:无法读取在prac.js:13处未定义的属性“”TypeError“”
EN

Stack Overflow用户
提问于 2018-09-28 08:42:07
回答 1查看 224关注 0票数 1

我尝试选择"contentWrap“目录下的所有"P”子元素,并将所有"p“元素的颜色改为红色,但我一直收到此错误消息。“未捕获长度:无法读取在prac.js:13处未定义的属性‘TypeError’”

The JavaScript

代码语言:javascript
复制
const wrap = document.getElementsByClassName("contentWrap");
const p = document.getElementsByTagName("P");
const ch = wrap.children;

const select = (e)=>{
    if(e.target.tagName === "P"){
        p.style.color = "red";
    }
}
    for(let i=0; i<ch.length; i++){  //this is line 13 where the error occurs
        select(ch[i]);
    }

HTML

代码语言:javascript
复制
<div class="contentWrap center">
        <div class="newRelease"><image class="br2"src="images/thumbnails/battlefieldps4.png"></image>
                    <p class="subTitle sline">New Releases</p>
                        <p class="pContent">Check out the newest releases for each console.</P>
                </div>
                    <div class="preRelease"><image class="br2" src="images/thumbnails/madden.png"></image>
                        <p class="subTitle sline">Pre Orders</p>
                            <p class="pContent">Pre order games, for future release dates in advance.</p>
                    </div>
                        <div class="news"><image class="br2" src="images/thumbnails/news.png"></image>
                            <p class="subTitle sline">Gaming News</p>
                                <p class="pContent">Check out the latest buzz & trending topics for all the different consoles.</p>
                        </div>
            </div> <!--end of contentWrap div-->
EN

回答 1

Stack Overflow用户

发布于 2018-09-28 08:56:13

您正在尝试访问getElementsByClassName结果上的键children (变量wrap)。这个值不是DOM节点,也没有children属性,因此ch最终为undefined (因此undefined.length抛出您看到的错误)。您可能想要获取getElementsByClassName返回的一个或所有元素的children。下面是你如何做到这一点:

首先:

代码语言:javascript
复制
const ch = wrap[0].children;

最后:

代码语言:javascript
复制
const ch = wrap[wrap.length - 1].children;

All (使用类contentWrap迭代每个元素,并对其子元素执行某些操作):

代码语言:javascript
复制
for(let contentWrap of wrap) {
  const { children } = contentWrap;
}

具有类contentWrap的第三个元素(或所需的任何索引)

代码语言:javascript
复制
const ch = wrap[2].children;

您可能想要阅读this MDN article on getElementsByClassName

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52546811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档