无法通过索引选中div元素,出现Uncaught TypeError错误求助
问题解决:Uncaught TypeError: Cannot read properties of undefined (reading 'style')
错误原因
你代码里的document.getElementsByClassName("img")返回的是包含所有class为img的元素的类数组集合,循环中的变量i就是单个的<div class="img">元素,不是元素集合。你用i[0]去访问它的"第一个元素",但单个DOM元素没有索引访问的能力,所以i[0]是undefined,自然就会抛出无法读取style属性的错误。
修复方案
根据你的需求,分两种情况处理:
情况1:要显示整个class为img的div
直接修改循环里的代码,去掉多余的[0]:
<script> var img = document.getElementsByClassName("img"); for (i of img) { i.style.display = "block"; } </script>
情况2:要显示div里的第一张图片
如果你的目标是让div里的第一张图片显示出来,需要先获取div内部的img元素,再修改样式:
<script> var imgContainers = document.getElementsByClassName("img"); for (container of imgContainers) { // 获取容器内的第一张img元素 const firstImg = container.getElementsByTagName('img')[0]; if (firstImg) { // 避免没有img元素时出错 firstImg.style.display = "block"; } } </script>
注:原CSS仅隐藏了.img容器,容器内的img默认是block状态,所以如果显示了容器,图片自然会显示。如果你的CSS也隐藏了img,才需要单独修改img的display属性。
内容的提问来源于stack exchange,提问作者black fire
相关产品推荐
相关产品推荐

