为什么JS代码"var a=document.querySelector('a[data-a=1]
Why does JS code "var a = document.querySelector('a[data-a=1]');" cause error?
我在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 API document.querySelector
不支持在HTML5自定义数据属性中查找数值。
这是浏览器实现错误的问题,还是与document.querySelector
相关的HTML5规范的问题?
然后我在上测试了下面的代码http://validator.w3.org/:
<!DOCTYPE html>
<meta charset="utf-8">
<title>An HTML Document</title>
<a href="#" data-a="1">Link</a>
它们经过验证。由于这些HTML5代码经过了验证。我们可以使用HTML5的JS API document.querySelector
通过其自定义数据属性来查找该锚元素。但事实是我犯了错误。
HTML5对HTML5 JS API document.querySelector
的规范是否说明此方法无法查找具有数值的HTML5数据自定义属性?(需要HTML5规范的源代码。)
来自选择器规范:
属性值必须是CSS标识符或字符串。
标识符不能以数字开头。字符串必须加引号。
因此,1
既不是有效的标识符,也不是字符串。
请改用"1"
(它是一个字符串)。
var a = document.querySelector('a[data-a="1"]');
您可以使用
var a = document.querySelector('a[data-a="1"]');
而不是
var a = document.querySelector('a[data-a=1]');
因为您需要在查找的值周围使用括号。所以这里:document.querySelector('a[data-a="1"]')
如果你事先不知道值,但正在通过变量寻找它,你可以使用模板文字:
假设我们有数据价格的divs
<div data-price="99">My okay price</div>
<div data-price="100">My too expensive price</div>
我们想找到一个元素,但有人选择了编号(所以我们不知道):
// User chose 99
let chosenNumber = 99
document.querySelector(`[data-price="${chosenNumber}"]`)
Yes字符串必须加引号,在某些情况下,如在appescription中,引号必须转义
do JavaScript "document.querySelector('span[" & attrName & "='"" & attrValue & "'"]').click();"
我花了一段时间才找到,但如果你有一个存储在变量中的数字,比如x,并且你想选择它,请使用
document.querySelector('a[data-a= + CSS.escape(x) + ']').
这是由于我还不太熟悉的一些属性命名规范。希望这能帮助到别人。
变量(ES6)的示例:
const item=document.querySelector([data-itemid="${id}"]
);
- Ember Data DS.Model's set函数不起作用
- Extending Ext.data.NodeInterface
- querySelector/getElementByClassName嵌套项的顺序
- 如何获取$data.Entity的密钥
- jQuery可以't获取data-*属性值,返回undefined
- Query JS Ext.data.Store
- 如何找到家长's的子级,使用querySelector而不是jQuery
- 设置'这'在React with Inverse Data Flow中
- Google Data API上的OOP Javascript回调方法
- 如何获取`data-listid`属性值
- 使用querySelector()获取最后一个td元素
- JSTree's data.rslt.obj.text()返回一个文本数组,而不是所需节点的文本
- 如何在JS中修饰querySelector/querySelectorAll
- KOValidation在错误消息中获取可观察值、$index()、$data等
- ko.com在foreach$data变量上添加了write函数
- Javascript、jquery、主干网、splunk:on(“change”、{data}、handler)导致Ty
- 为什么toStaticHTML删除data-*属性
- Javascript Canvas使用getImageData(x,y,1,1).data获取颜色
- Javascript .querySelector 通过 innerTEXT 查找
- 为什么JS代码"var a=document.querySelector('a[data-a=1]