如何使用 .querySelector 选择器定位 .style 属性?

Posted

技术标签:

【中文标题】如何使用 .querySelector 选择器定位 .style 属性?【英文标题】:How to target .style attribut with .querySelectorAll selector? 【发布时间】:2016-06-06 17:16:03 【问题描述】:

我通过.querySelectorAll选择了一个特定的班级:

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

我现在正在尝试通过执行以下操作来定位和调整此元素的 .style.visibility 属性:

hit3.style.visibility = "visible";

然而这会导致错误:

Uncaught TypeError: Cannot set property 'visibility' of undefined

如何使用上述.querySelectorAll 选择器定位特定的.style

Fiddle

【问题讨论】:

querySelectorAll 返回一个节点列表...所以你需要遍历它 【参考方案1】:

querySelectorAll 返回一个类似结构(NodeList)的数组,它没有style 属性。

但我认为您需要的略有不同,我假设想要为点击的元素显示圆圈

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>

【讨论】:

【参考方案2】:

querySelectorAll 返回一个节点列表,因此您应该指定要更改的元素的索引:

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

如果你想改变返回的所有元素的 css,你应该遍历它们,参见Johny's answer。

希望这会有所帮助。

【讨论】:

以上是关于如何使用 .querySelector 选择器定位 .style 属性?的主要内容,如果未能解决你的问题,请参考以下文章

js高级选择器querySelector和querySelectorAll

javascript高级选择器querySelector和querySelectorAll

HTML5中类jQuery选择器querySelector的高级使用

JS选择器querySelector和~All,三个原生选择器

如何使用 querySelector 在锚标记的 href 属性末尾定位哈希?

querySelector( ) 方法