我正在尝试使用 Node.cloneNode()
在 header 中克隆模板而没有成功。
这是我的标记
var header = document.querySelector("header"),
$templateHeader = document.querySelector("[data-template=header]");
header.innerHTML = $templateHeader.innerHTML;
<header></header>
<!--templates-->
<template data-template=header>
<div class=container>
<menu class=row>
<li><a>Home</a></li>
<li><a>items</a></li>
<li><a>Reseller</a></li>
<li><a>Shop</a></li>
</menu>
</div>
</template>
这很好
header.innerHTML = $templateHeader.innerHTML;
虽然这不起作用
var header = document.querySelector("header"),
$templateHeader = document.querySelector("[data-template=header]");
header.innerHTML = $templateHeader.cloneNode(true);
<header></header>
<!--templates-->
<template data-template=header>
<div class=container>
<menu class=row>
<li><a>Home</a></li>
<li><a>items</a></li>
<li><a>Reseller</a></li>
<li><a>Shop</a></li>
</menu>
</div>
</template>
即使这样
var header = document.querySelector("header"),
$templateHeader = document.querySelector("[data-template=header]");
header.appendChild($templateHeader.cloneNode(true));
<header></header>
<!--templates-->
<template data-template=header>
<div class=container>
<menu class=row>
<li><a>Home</a></li>
<li><a>items</a></li>
<li><a>Reseller</a></li>
<li><a>Shop</a></li>
</menu>
</div>
</template>
当我console.log
$templateHeader.cloneNode(true)
时,这就是我得到的谁能帮助我了解我在这里做错了什么?
注意:我不想使用jquery
问候,坦波
最佳答案
您已经克隆了整个模板,并尝试将模板附加到标题中。您不想这样做,您想要附加模板的内容。
var header = document.querySelector("header"),
$templateHeader = document.querySelector("[data-template=header]");
header.appendChild($templateHeader.content.cloneNode(true));
<header></header>
<!--templates-->
<template data-template=header>
<div class=container>
<menu class=row>
<li><a>Home</a></li>
<li><a>items</a></li>
<li><a>Reseller</a></li>
<li><a>Shop</a></li>
</menu>
</div>
</template>
就是说,在网上找到的许多示例中,我发现使用了
importNode
而不是cloneNode
:var clone = document.importNode(t.content, true);