使用阴影将内容与演示文稿分开 DOM
Separate Content from Presentation using Shadow DOM
问题:如何从 #nameTagTemplate
模板中替换 <content></content
的内容?
问题:目前我的 javascript 替换了所有模板元素。
HTML
<div class="todo">Hey I'm a todo app</div>
<template id="nameTagTemplate">
<style>
.outer {
border: 2px solid brown;
}
</style>
<div class="outer">
<div class="boilerplate">
Hi! My name is
</div>
<div class="name">
<content></content>
</div>
</div>
</template>
js文件
var todoEl = document.querySelector('.todo');
var template = document.querySelector('#nameTagTemplate');
var clone = document.importNode(template.content, true);
var root = todoEl.createShadowRoot()
root.appendChild(clone);
root.textContent = 'Shellie'; // this line replaces all nodes in template.
// I would like root.textContent to just replace the content tag elements.
评论:更新仍然无效
// template logic goes here
var todoEl = document.querySelector('.todo');
var template = document.querySelector('#nameTagTemplate');
var clone = document.importNode(template.content, true);
clone.getElementsByTagName("content")[0].textContent='123';
var root = todoEl.createShadowRoot();
root.appendChild(clone);
因此,如果您编辑 .todo
元素的 textContent
,那么它会按预期工作。
var todoEl = document.querySelector('.todo');
var template = document.querySelector('#nameTagTemplate');
var clone = document.importNode(template.content, true);
var root = todoEl.createShadowRoot();
root.appendChild(clone);
todoEl.textContent = 'Shellie';
var todoEl = document.querySelector('.todo');
var template = document.querySelector('#nameTagTemplate');
var clone = document.importNode(template.content, true);
var root = todoEl.createShadowRoot();
root.appendChild(clone);
todoEl.textContent = 'Shellie';
<div class="todo">Hey I'm a todo app</div>
<template id="nameTagTemplate">
<style>
.outer {
border: 2px solid brown;
}
</style>
<div class="outer">
<div class="boilerplate">
Hi! My name is
</div>
<div class="name">
<h3><content></content></h3>
</div>
</div>
</template>
在 html5rocks article 中,这是通过在单击按钮时查询 DOM 元素来完成的。它还说“插入点从影子主机中挑选内容以在该点呈现”,这意味着影子主机上的内容是 [=15= 中的内容]元素。
问题:如何从 #nameTagTemplate
模板中替换 <content></content
的内容?
问题:目前我的 javascript 替换了所有模板元素。
HTML
<div class="todo">Hey I'm a todo app</div>
<template id="nameTagTemplate">
<style>
.outer {
border: 2px solid brown;
}
</style>
<div class="outer">
<div class="boilerplate">
Hi! My name is
</div>
<div class="name">
<content></content>
</div>
</div>
</template>
js文件
var todoEl = document.querySelector('.todo');
var template = document.querySelector('#nameTagTemplate');
var clone = document.importNode(template.content, true);
var root = todoEl.createShadowRoot()
root.appendChild(clone);
root.textContent = 'Shellie'; // this line replaces all nodes in template.
// I would like root.textContent to just replace the content tag elements.
评论:更新仍然无效
// template logic goes here
var todoEl = document.querySelector('.todo');
var template = document.querySelector('#nameTagTemplate');
var clone = document.importNode(template.content, true);
clone.getElementsByTagName("content")[0].textContent='123';
var root = todoEl.createShadowRoot();
root.appendChild(clone);
因此,如果您编辑 .todo
元素的 textContent
,那么它会按预期工作。
var todoEl = document.querySelector('.todo');
var template = document.querySelector('#nameTagTemplate');
var clone = document.importNode(template.content, true);
var root = todoEl.createShadowRoot();
root.appendChild(clone);
todoEl.textContent = 'Shellie';
var todoEl = document.querySelector('.todo');
var template = document.querySelector('#nameTagTemplate');
var clone = document.importNode(template.content, true);
var root = todoEl.createShadowRoot();
root.appendChild(clone);
todoEl.textContent = 'Shellie';
<div class="todo">Hey I'm a todo app</div>
<template id="nameTagTemplate">
<style>
.outer {
border: 2px solid brown;
}
</style>
<div class="outer">
<div class="boilerplate">
Hi! My name is
</div>
<div class="name">
<h3><content></content></h3>
</div>
</div>
</template>
在 html5rocks article 中,这是通过在单击按钮时查询 DOM 元素来完成的。它还说“插入点从影子主机中挑选内容以在该点呈现”,这意味着影子主机上的内容是 [=15= 中的内容]元素。