我刚开始使用Web组件,想要获取标记名以"-component"结尾的所有元素,以便将它们注册为自定义标记。
为了获得最佳性能,我希望使用querySelectorAll**,而不是迭代所有元素**。
但是,正如您在下面的示例中看到的,[tag$="-component"]
找不到元素。
const components = document.querySelectorAll('[tag$="-component"]');
const result = document.querySelector('.result');
result.innerHTML = 'Search started<br>';
for(var i = 0; i < components.length; i++){
result.innerHTML = result.innerHTML + components[i].tagName + '<br>';
}
<my-component>
<hello-world-component>
<h1>Hello, world!</h1>
</hello-world-component>
</my-component>
<div class="result"></div>
如果任何人知道发生了什么事,可以让我知道,或者如果任何人知道,如果这甚至是可能的,这将是非常感谢。
3条答案
按热度按时间9lowa7mx1#
CSS语法
$=
适用于元素 * 属性 *,而不是元素本身。没有语法可以创建一个CSS选择器来匹配具有特定后缀的元素。
但是,如果目的是查找尚未注册的定制元素,则可以使用
:defined
选择器:d6kp6zgx2#
这些元素中没有定义"tag"属性,但是你可以通过javascript添加它。
olqngx593#
不需要 * 全局 * 脚本或
:defined
tag
属性querySelectorAll
都将工作