【问题标题】:How to use querySelectorAll with a variable?如何将 querySelectorAll 与变量一起使用?
【发布时间】:2018-05-09 12:03:16
【问题描述】:

我有两个相互替代的 HTML 元素,我正在尝试编写一个 JS 函数,如果另一个存在则删除一个(它们起源于 <sic><corr><choice> 下的单词TEI 文件)。在我的转换中,它们都被分配了一个带有唯一前缀的代码(不是 @id: @id 是随机生成的,并且必须保留用于其他目的):

<a id="abc" choicePOS="sic0">Element1</a>
<a id="xyz" choicePOS="corr0">Element2</a>

在“属于”Element1 的 JS 函数中,我想选择 Element2 以将其删除。这是我尝试过的(el 是 element1):

var choicePOS = el.getAttribute("choicePOS").slice(3); // produces 0
var corrID = "corr" + choicePOS; // produces corr0
var corr = document.querySelectorAll("a[choicePOS=corrID]");

这失败了,大概是因为最后一行中的corrID 变量在引号中并且被视为字符串。我已经阅读了有关 CSS 选择器的各种教程,但找不到任何关于如何将它们与可变属性值一起使用的指导。这可能吗?如果是这样,怎么做?如果没有,还有其他选择吗?

编辑:关于如何在 JS 中将字符串与变量连接起来的许多其他问题已被建议作为此问题的重复项。为了澄清,我特别询问querySelectorAll,因为我找不到任何与变量一起使用的示例。如果答案是它的选择器将被视为任何其他 JS 字符串(即可以连接变量),那么这是完全令人满意的。

【问题讨论】:

标签: javascript html css


【解决方案1】:

使用模板文字来评估它

var corr = document.querySelectorAll(`a[choicePOS=${corrID}]`);

【讨论】:

  • 我相信你的意思是document.querySelectorAll(`a[${choicePOS}=${corrID}]`)
  • 你应该保留@lonesomeday 的编辑。现在又坏了。
  • 他的编辑是`a[choicePOS=${corrID}]`,因为corrID 是要添加到字符串中的变量。数据属性名为choisePOS。如果您使用@skyboyer 的版本,选择器将尝试选择"0=corr0"
  • 不,还是坏了。现在您又回到了@skyboyer 的损坏版本。这如何不断获得支持?
  • @EysteinThanisch 然后尝试正常的字符串连接,像这样document.querySelectorAll('a[choicePOS=' + corrID + ']' );
猜你喜欢
  • 2013-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-31
  • 2022-01-12
  • 2021-01-09
相关资源
最近更新 更多