Hez*_*ina 3 html javascript css-selectors
标题几乎不言自明......
这是我的代码:
<div id=player>
<div class="button hand">►</div>
<div class=time>00:00/00:00</div>
<div class="timeline hand"><span class="now hand"></span></div>
</div>
Run Code Online (Sandbox Code Playgroud)
我希望能够得到<span class="now hand"></span>
这两者之间<div class="timeline hand"></div>
通过querySelector
var now=document.querySelector('#player>_____________.now.hand');
Run Code Online (Sandbox Code Playgroud)
我也在考虑是否有更方便的方法来从相对 id 中通过孩子或兄弟姐妹编号而不是使用 id 或类名来选择对象。
您使用标准的后代选择器(#player
和之间的空格.now.hand
):
var text = document.querySelector("#player .now.hand").innerHTML;
var p = document.createElement('p');
p.innerHTML = "Text is '" + text + "'";
document.body.appendChild(p);
Run Code Online (Sandbox Code Playgroud)
<div id=player>
<div class="button hand">►</div>
<div class=time>00:00/00:00</div>
<div class="timeline hand"><span class="now hand">text in now hand</span></div>
</div>
Run Code Online (Sandbox Code Playgroud)
我也在考虑是否有更方便的方法来从相对 id 中通过孩子或兄弟姐妹编号而不是使用 id 或类名来选择对象。
如果这是在事件处理程序中(或在其他任何地方以对某个元素的引用开始),是的,您可以使用它parentNode
来查找父项(或反复查找祖先),您可以querySelector
在元素上使用仅查看内部它等。
例如:
document.body.addEventListener("click", function(e) {
var targetClass = e.target.className;
if (/\bbutton\b/.test(targetClass) && /\bhand\b/.test(targetClass)) {
alert(e.target.parentNode.querySelector(".now.hand").innerHTML);
}
}, false);
Run Code Online (Sandbox Code Playgroud)
.button.hand {
color: blue;
font-weight: bold;
}
.now.hand {
color: green;
}
Run Code Online (Sandbox Code Playgroud)
<div>
<div class="button hand">Click me</div>
<div class=time>00:00/00:00</div>
<div class="timeline hand"><span class="now hand">First hand</span></div>
</div>
<div>
<div class="button hand">Click me</div>
<div class=time>00:00/00:00</div>
<div class="timeline hand"><span class="now hand">Second hand</span></div>
</div>
<div>
<div class="button hand">Click me</div>
<div class=time>00:00/00:00</div>
<div class="timeline hand"><span class="now hand">Third hand</span></div>
</div>
Run Code Online (Sandbox Code Playgroud)