JavaScript 选择器
如何在 JavaScript 中选择 DOM 元素?
例如:
<div class="des">
<h1>Test</h1>
<div class="desleft">
<p>Lorem Ipsum.</p>
</div>
<div class="Right">
<button>Test</button>
</div>
</div>
现在我如何选择h1
?这只是更大页面的一部分,因此不能使用 getElementsByTagName() ,因为其他页面可能会被选中。另外,由于稍后文档中可能还有其他 h1
,因此我无法将索引(正文)附加到上面。
有没有一种简单的方法来选择,例如
标签,它位于 desleft
的类名下? 我无法使用 jQuery 或任何其他库。
How does one select DOM elements in javascript?
Like for example:
<div class="des">
<h1>Test</h1>
<div class="desleft">
<p>Lorem Ipsum.</p>
</div>
<div class="Right">
<button>Test</button>
</div>
</div>
Now how do i select h1
? This is just a part of a bigger Page, so cannot use getElementsByTagName()
, since others might get selected. Also since there might be other h1
's in the document later, i cannot attach the index(body's) to above.
Is there a simple way to select, say <h1>
tag which is under the classname of desleft
?
I cannot use jQuery or any other libraries.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
您可以使用它来访问您的 H1:
You can use this to get to your H1:
w3.org 现在有选择器(http://www.w3.org/TR/selectors-api/#examples)。这里有两种在 Chrome 上对我有用的不同方法。您可能想要使用返回列表的 querySelectorAll 函数。
w3.org has selectors now (http://www.w3.org/TR/selectors-api/#examples). Here are 2 different ways that worked for me on Chrome. You may want to use querySelectorAll function that returns a list.
使用querySelectorAll
您可以使用
querySelectorAll
:这将返回一个NodeList。
或
使用
querySelector
返回找到的第一个元素:常用于id 选择器
#single-header-id
。这是一个演示
Use querySelectorAll
You can use
querySelectorAll
:This will return a NodeList.
or
Use
querySelector
to return the first element found:Commonly used with an id selector
#single-header-id
.Here's a demo
您可以从一个函数开始,然后您可以过滤具有该类的 DOMElements。
如果在大海捞针中找不到针,
.indexOf
函数将返回-1
。现在重新阅读你的问题,为什么不直接给出你的 h1 的 id 呢?
DOM 遍历是 javascript 的突出问题之一(请输入 jQuery)。
一个简单的
getElementById()
会让您省去麻烦,并且所有 h1 上的 id 最终会比尝试制定算法通过其他方式选择它们要干净得多。Would be a function that you can start with, and then you can filter for the DOMElements that have the class.
The
.indexOf
function returns-1
if the needle is not found in the haystack.Now re-reading your question, why not just give your h1's id's ?
DOM traversal is one of javascript's glaring issues (enter jQuery).
a simple
getElementById()
would save you a headache, and ids on all your h1's would be much cleaner in the end than trying to formulate an algorithm to select them by other means.如果您要选择
desleft
类的 第一个 元素之前的h1
,您始终可以这样做:示例: http://jsfiddle.net/Xeon06/ZMJJk/
previousSibling
需求由于两者之间有空文本节点而被调用两次。这就是为什么使用库来做这些事情确实是最好的方法。If you mean to select a
h1
that is before the first element of classdesleft
, you could always do this:Example: http://jsfiddle.net/Xeon06/ZMJJk/
previousSibling
needs to be called twice because of the empty text node between the two. That's why using libraries to do this stuff is really the best way to go.