[英]Uncaught TypeError: tplContent.importNode is not a function
我正在閱讀“ Web Components mit Polymer”一書,並嘗試了該書中的以下代碼:
<!doctype html>
<html>
<body>
<template id="tpl">
<h1 class="title"></h1>
<div class="body"></div>
</template>
<script>
var tplContent = document.getElementById("tpl").content;
var node = tplContent.importNode(true);
node.querySelector("h1").textContent = "Hallo Welt";
node.querySelector("div").textContent = "Ich komme aus einem Template";
document.body.appendChild(node);
</script>
</body>
</html>
但是我只是在第二個JS行中停了下來,並報錯:
未捕獲的TypeError:tplContent.importNode不是函數
我在Ubuntu上使用Google Chrome版本63.0.3239.84。 有人可以幫我這個忙嗎?
問候,阿圖爾
importNode
應該在document
上調用,而不是在document
的元素上調用。
<!doctype html> <html> <body> <template id="tpl"> <h1 class="title"></h1> <div class="body"></div> </template> <script> var tplContent = document.getElementById("tpl").content; // importNode is a method of document: var node = document.importNode(tplContent, true); node.querySelector("h1").textContent = "Hallo Welt"; node.querySelector("div").textContent = "Ich komme aus einem Template"; document.body.appendChild(node); </script> </body> </html>
從MDN :
Document方法
importNode()
從另一個文檔創建指定的Node或DocumentFragment的新副本,以便可以將其插入到當前Document中。 它尚未包含在文檔樹中; 為此,您需要調用諸如appendChild()
或insertBefore()
。
有關在此處使用<template>
和document.importNode()
其他信息。
您在這里有一個錯誤:
var node = tplContent.importNode(true);
tpl
沒有功能importNode()
如果要使用importNode :
var node = document.importNode(tplContent, true);
<!doctype html> <html> <body> <template id="tpl"> <h1 class="title"></h1> <div class="body"></div> </template> <script> var tplContent = document.getElementById("tpl").content; var node = document.importNode(tplContent, true); node.querySelector("h1").textContent = "Hallo Welt"; node.querySelector("div").textContent = "Ich komme aus einem Template"; document.body.appendChild(node); </script> </body> </html>
或者,您可以對<template>
的content
使用cloneNode()
方法。
var tplContent = document.getElementById("tpl").content;
var node = tplContent.cloneNode(true);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.