How to target .style attribut with .querySelectorAll selector?

可紊 提交于 2019-12-20 04:16:24

问题


I have selected a specific class via .querySelectorAll:

var hit3 = document.querySelectorAll(".lattern.hit-3 .circle");

I am now trying to target and adjust a .style.visibility attribut on this element, by doing the following:

hit3.style.visibility = "visible";

This however results in an error:

Uncaught TypeError: Cannot set property 'visibility' of undefined

How do I target a specific .style with the above .querySelectorAll selector?

Fiddle


回答1:


querySelectorAll return a node list so you should specify the index of element you want to change :

hit3[0].style.visibility = "visible";

If you want to change the css of all the elements returned you should loop through them, see Johny's answer.

Hope this helps.




回答2:


querySelectorAll returns an array like structure(NodeList) which does not have the style attribute.

But I think what you need is slightly different, I assume want to display the circle for the clicked element then

var latternElement = document.querySelectorAll('.lattern');

function toggleElement(el) {
  el.querySelector('.circle').classList.add('visible'); //also minor tweaks, use css rules
}

for (var i = 0; i < latternElement.length; i++) {
  latternElement[i].addEventListener('click', function(event) {
    if (this.classList.contains("hit-3")) { //minor tweaks - only supported in modern browsers
      toggleElement(this);
    }
  });
}
.lattern {
  position: relative;
  width: 100px;
  height: 50px;
  background-color: red;
  margin: 0 0 10px 0;
  cursor: pointer;
}
.circle {
  position: relative;
  top: 20px;
  left: 20px;
  border-radius: 50% 50%;
  width: 16px;
  height: 16px;
  background-color: green;
  visibility: hidden;
}
.circle.default,
.circle.visible {
  visibility: visible;
}
<div class="lattern hit-1">
  <div class="circle"></div>
</div>
<div class="lattern hit-2">
  <div class="circle default"></div>
</div>
<div class="lattern hit-3">
  <div class="circle"></div>
  click me
</div>


来源:https://stackoverflow.com/questions/35601756/how-to-target-style-attribut-with-queryselectorall-selector

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!