我有一些类似于 this_div_id_NUMBER
的id,所有的 div
元素都有不同的 NUMBER
部分。如何只使用 this_div_id
部分的id来查找所有的 div
元素?
我有一些类似于 this_div_id_NUMBER
的id,所有的 div
元素都有不同的 NUMBER
部分。如何只使用 this_div_id
部分的id来查找所有的 div
元素?
document.querySelectorAll("[id^='this_div_id']")
等号旁边的^表示“以……开头”,您可以使用*代替,但这样容易产生误报。
为了在querySelectorAll中实现最大兼容性,您还需要确保在属性选择器中使用引号(或撇号)引用比较值;在jQuery和新版本浏览器中没有影响,但在旧版浏览器中很重要。
编辑:最近有更具体的选择器需求:
document.querySelectorAll("[id^='this_div_id']:not([id$='_test_field'])");
not()段阻止以"_test_field"结尾的任何内容进行匹配。
querySelectorAll
querySelectorAll
接受 CSS 选择器并返回匹配该 css 选择器的所有元素的 HTMLNodeList(一种数组)。
CSS 选择器^
(以此开头)可用于您的目的。 在本文中了解更多信息。
对于您的情况,可以使用 document.querySelectorAll("[id^='this_div_id']");
。
请注意,querySelectorAll
不返回实时节点列表。 这意味着,对 DOM 的任何更改都不会实时更新函数返回值中的内容。
另一种方法是给所有元素分配特定类,然后可以使用 getElementsByClassName
(比 querySelector 快得多)。
var divs = document.getElementsByClassName("divClass");
最好使用类。 但是有一个解决方案,您需要(假设您使用jQuery):
$("*[id^='this_div_id']")
$("[id^='this_div_id_']")