为什么 es6 模板字符串在这种情况下需要双夸脱 Javascript?
Why the es6 template-string needs double quart in this occasion Javascript?
我现在在 Javascript30 #1,我一直在想一些小东西...
下面的代码有效。
const audio = document.querySelector(`audio[data-key="${e.keyCode}"]`);
但是,下面这段代码出错了。
const audio = document.querySelector(`audio[data-key=${e.keyCode}]`);
为什么会发生这些?
据我检查,任何变量和字符串如果被 back-quarts 包围并使用 ${}
都是有效的......
查看输出...
`audio[data-key="${e.keyCode}"]`
"audio[data-key="Y"]"
`audio[data-key=${e.keyCode}]`
"audio[data-key=Y]"
由于缺少引号(“Y”或 'Y'),前者不能用作选择器。
但是,我 double-checked 看起来 Chrome 可以。
拍下这一页...接下来的工作
var q = "q"
document.querySelector(`#search > div > input[name="${q}"]`)
document.querySelector(`#search > div > input[name='${q}']`)
document.querySelector(`#search > div > input[name=${q}]`)
抱歉没有答案:)
问题不在于模板字符串,而是关于在 querySelector
中传递的选择器值。
data-* 值是字符串。数值也必须用引号引起来才能在选择器中使用它们。
在您的第一个代码中,值是字符串并通过了测试,而在第二个代码中(未用引号引起来)它们未被视为有效选择器。
我现在在 Javascript30 #1,我一直在想一些小东西...
下面的代码有效。
const audio = document.querySelector(`audio[data-key="${e.keyCode}"]`);
但是,下面这段代码出错了。
const audio = document.querySelector(`audio[data-key=${e.keyCode}]`);
为什么会发生这些?
据我检查,任何变量和字符串如果被 back-quarts 包围并使用 ${}
都是有效的......
查看输出...
`audio[data-key="${e.keyCode}"]`
"audio[data-key="Y"]"
`audio[data-key=${e.keyCode}]`
"audio[data-key=Y]"
由于缺少引号(“Y”或 'Y'),前者不能用作选择器。
但是,我 double-checked 看起来 Chrome 可以。 拍下这一页...接下来的工作
var q = "q"
document.querySelector(`#search > div > input[name="${q}"]`)
document.querySelector(`#search > div > input[name='${q}']`)
document.querySelector(`#search > div > input[name=${q}]`)
抱歉没有答案:)
问题不在于模板字符串,而是关于在 querySelector
中传递的选择器值。
data-* 值是字符串。数值也必须用引号引起来才能在选择器中使用它们。
在您的第一个代码中,值是字符串并通过了测试,而在第二个代码中(未用引号引起来)它们未被视为有效选择器。