问题标签 [selectors-api]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 为什么JS代码“var a = document.querySelector('a[data-a=1]');” 导致错误?
我在 DOM 中有一个元素:
<a href="#" data-a="1">Link</a>
我想通过它的 HTML5 自定义数据属性来获取这个元素data-a
。所以我写了JS代码:
var a = document.querySelector('a[data-a=1]');
但是这段代码不起作用,我在浏览器的控制台中收到错误。(我测试了 Chrome 和 Firefox。)
JS代码var a = document.querySelector('a[data-a=a]');
不会导致错误。所以我认为问题在于 HTML5 的 JS APIdocument.querySelector
不支持在 HTML5 自定义数据属性中查找数字值。
这是浏览器实现错误的问题还是与 HTML5 规范相关的问题document.querySelector
?
然后我在http://validator.w3.org/上测试了以下代码:
他们经过验证。由于这些 HTML5 代码已经过验证。我们应该可以使用 HTML5 的 JS APIdocument.querySelector
通过其自定义数据属性来查找此锚元素。但事实是我出错了。
HTML5 对 HTML5 JS API 的规范是否document.querySelector
说此方法不能查找具有数字值的 HTML5 数据自定义属性?(需要 HTML5 规范源。)
javascript - 使用 querySelectorAll 获取元素
我有html标签,
我需要使用这个元素
但是上面的代码总是返回空数组。请帮助我使用 querySelectorAll() 获取元素。
javascript - 如果我不需要结果列表中 CSS 选择器的粒度,为什么我会想要一个静态 NodeList/HTMLCollection 而不是“实时”NodeList?
我通常听说这是因为实时 NodeLists 是“坏的” (请参阅这篇 Zakas 文章),并且决定querySelectorAll
返回一个 static HTMLCollection
。为什么人们认为实时 NodeList 是一件坏事?代码示例可能会帮助我最好地理解这一点。
如果每当我关心使用缓存的节点集合的值进行任何计算时,该集合恰好不是过时的快照,我真的不能将其视为“坏”的事情。
我确切地了解使用 CSS Selector 字符串选择元素有多么有用,但如果我只能在获取该集合后可靠地运行代码,它似乎比 live NodeList
.
javascript - 使用 querySelectorAll 获取选定的选项
我想知道是否有可能在 Javascript 中<select multiple>
使用 Selctors API 获取字段中当前选定的选项,而不是对所有选项进行“愚蠢”迭代。
select.querySelectorAll('option[selected="selected"]')
仅返回在原始 HTML 中标记为预选的选项,这不是我想要的。有任何想法吗?
javascript - document.querySelector 未定义标准模式 iframe 在 quirks 模式父级中运行
在运行带有书签的 IE 10 时遇到这种情况。当我针对以怪异模式运行的页面运行小书签并尝试使用 document.querySelector 时,document.querySelector 未定义。
为了解决这个问题,当我检测到 document.documentMode 为 5(怪癖模式)时,我创建了一个 iframe 并将页面内容复制到该 iframe 中以将其置于标准模式。我验证 iframe 中的文档处于标准模式(document.documentMode 为 8 - IE 8 标准模式),但 document.querySelector 仍未定义。我相信 documentMode 必须至少为 9 才能支持 querySelector。我无法弄清楚为什么 documentMode 是 8 而不是 10,因为我在 IE 10 上运行。
xpath - 将 XPath 与 CasperJS QuerySelectorAll 一起使用不起作用
出于某种原因,当我尝试运行以下代码时:
返回一个空对象,但是当我将相同的 xpath 选择器与 thenClick 方法结合使用时,一切正常,并且 url 发生了变化。为什么会这样?
javascript - document.querySelectorAll('a:visited') 不起作用
document.querySelectorAll('a:visited')
总是返回空的 NodeList,即使 DOM 有一些访问过的链接。
我已经在 Chrome 中尝试过。是否有任何已知的错误或预期的行为?
如果我在样式表中使用它而不是 querySelectorAll,虽然:visited
效果很好。
我认为伪类可以作为querySelectorAll()
.
javascript - querySelectorAll 参数的正则表达式验证器
我编写了非常基本的正则表达式来验证 querySelectorAll() 方法的参数。验证了一些随机值,似乎它工作正常。
我只是想知道是否可以进行一些改进。
正则表达式可能会遗漏一些验证,但我的主要问题是关于我的方法,关于我编写这个正则表达式的方式。我对正则表达式也很陌生。如果我在表现方面犯了任何重大错误,请指出我。
javascript - 关于“活”元素的解释
我刚刚阅读了这篇关于 NodeLists 的文章:
http://www.nczonline.net/blog/2010/09/28/why-is-getelementsbytagname-faster-that-queryselectorall/
如果我理解正确,getElementsByTag 名称是实时的,而 querySelectorAll 不是。那么有人可以向我解释为什么 pNotLive 的标题是“stackoverflow”吗?:
javascript - 如何将 querySelectorAll() 函数添加到 IE <= 7 的 Element?
使用本文中的代码,我已成功添加querySelectorAll
到document
IE7 中。
但我需要在一个元素上使用它而不是document
,像这样:
有没有办法添加querySelectorAll
到 IE7 中的元素而不仅仅是添加到 IE7 中document
?