Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 避免克隆HTMLTemplate以检索innerHTML?_Javascript_Html_Performance_Underscore.js Templating_Html5 Template - Fatal编程技术网

Javascript 避免克隆HTMLTemplate以检索innerHTML?

Javascript 避免克隆HTMLTemplate以检索innerHTML?,javascript,html,performance,underscore.js-templating,html5-template,Javascript,Html,Performance,Underscore.js Templating,Html5 Template,我在标记中有所有模板以提高运行时性能(避免渲染),但我想知道当我需要它们的内容来编译下划线模板时,是否正确使用了它们。我想要的是DOM元素的字符串内容,但如果不从影子DOM克隆它,我似乎无法访问它。我正在这样做: function compileTemplate(templateId){ var el = document.getElementById(templateId); var templateMarkup = _.unescape(el.cloneNode(true).

我在
标记中有所有模板以提高运行时性能(避免渲染),但我想知道当我需要它们的内容来编译下划线模板时,是否正确使用了它们。我想要的是DOM元素的字符串内容,但如果不从影子DOM克隆它,我似乎无法访问它。我正在这样做:

function compileTemplate(templateId){
    var el = document.getElementById(templateId);
    var templateMarkup = _.unescape(el.cloneNode(true).innerHTML);
    return compiledTemplate = _.template(templateMarkup);
}

这是可行的,但是有没有更有效的方法来避免克隆?

您应该能够直接获得
innerHTML
字符串而无需克隆:

function compileTemplate(templateId) {
    var el = document.getElementById(templateId);
    var templateMarkup = _.unescape(el.innerHTML);
    return compiledTemplate = _.template(templateMarkup);
}
函数compileTemplate(templateId){
var el=document.getElementById(templateId);
console.log(el.innerHTML)
}
功能测试(){
compileTemplate('T1')
}

内部HTML

编译
我完全不知道我是怎么逃过这一劫的。呵呵,实际上是无意的双关语:-)我想我只是使用了node.content,但什么都没有得到。