为什么我无法访问document.querySelectorAll的某些元素

时间:2019-11-02 19:10:15

标签: javascript html css

我是编程新手,我想了解为什么我可以以某种方式访问​​某些元素,为什么不能以相同的方式访问其他元素。

有代码:

    const cImg = document.querySelectorAll('#cImg');
    console.log('c :', cImg);

    console.log('element : ', cImg['0'].offsetHeight);

    cImg.forEach(element => {
      console.log('e :', element.clientWidth);
    });

我在console.log中看到“ cImg”,元素offsetHeightclientWidth

enter image description here

enter image description here

如果我尝试在forEach中登录ofsetHeilght,则会出现此错误

enter image description here

enter image description here

但是如果我这样做是这样的:cImg['0'].offsetHeight我的显示正确为“ 399” 并且如果我想在forEach中看到元素“ clientWidht”,则显示为“ 298”

我不明白为什么,因为两个元素都在“ cImg数组”中。

有人发了言吗?

非常感谢。

1 个答案:

答案 0 :(得分:2)

[编辑]

要通过javascript进入元素中的CSS,您需要通过element.style

尝试

element.style.offsetHeight

[edit 2]不,这不是因为要获取CSS就是element.style.height和javascript无法获取CSS代码。星期六晚上酒过多。 :P


[编辑2]

function displayWidth() {
  const cImg = document.querySelectorAll('.cImg');

  console.log('c :', cImg);
  
  if (cImg.length) {
    console.log('element : ', cImg[0].offsetHeight);

    cImg.forEach(element => {
      console.log('e :', element.clientWidth);
    });
  }

}
<body onload="displayWidth()">

<div class="cImg">
askldajsldkjasdklasd
</div>

<div class="cImg">
askldajsldkjasdklasd
</div>


<div class="cImg">
askldajsldkjasdklasd
</div>


<div class="cImg">
askldajsldkjasdklasd
</div>

</body>


未经测试,但每个元素只能具有各自的唯一ID(如果有)。您可以将querySelectorAll使用的是类(以及其他东西)。因此,一群人中的每个人都有自己唯一的名称,但是所有人都属于humans类。将id="cImg"更改为class="cImg",并改用querySelectorAll(".cImg")