How to add a shadow dom to all elements with a certain class name
我正在关注html5rocks影子DOM教程,并且我想:"如果我可以使用脚本向每个属于类的元素添加影子dom,该怎么办?"但是它没有起作用。我有以下html:
1 2 3 | Bob Jim <template id="name-tag">...</template> |
然后是此javascript:
1 2 3 4 5 6 7 | var nameTags = document.querySelectorAll('.nameTag'); var template = document.querySelector('template#name-tag'); for (var i = nameTags.length - 1; i >= 0; i--) { var shadow = nameTags[i].webkitCreateShadowRoot(); shadow.appendChild(template.content); template.remove(); }; |
此代码仅显示名称为Jim的模板。看了chrome dev工具后,我看到
您当然可以这样做,这里有几个问题。
首先,您应该在循环外的模板上执行
第二
1 2 3 4 5 6 | for (var i = nameTags.length - 1; i >= 0; i--) { var shadow = nameTags[i].webkitCreateShadowRoot(); var clone = template.content.cloneNode(true); shadow.appendChild(clone); }; template.remove(); |
这是一个工作中的jsFiddle。