簡體   English   中英

未捕獲的TypeError:tplContent.importNode不是函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM