2017-02-15 94 views
1

我得到了多个文/模板在我的代码脚本,我希望能够改变H1标签在所有使用javascript 他们(jQuery的)编辑HTML中的文本/模板

<script type="text/template"> 
    <h1>This should be replaced</h1> 
    <p>Testing 123</p> 
</script> 

我不想从这个模板创建一个新的元素,我想改变模板的实际内容。

这是我到目前为止已经试过,这可悲的是不返回任何结果。

console.log($("script[type='text/template']")); 

真的很感谢指针!

+0

要替换**

这应该被替换

**一些标签? –

+0

您使用的是哪个版本的jQuery。它作为一个小提琴工作正常。 https://jsfiddle.net/kaminasw/bwns89Lq/ –

+1

它在控制台返回结果对我来说:https://jsfiddle.net/6L6mt7ta/ – Connum

回答

2

由于h1元素是不是你DOM你可以创建一个新的元素,添加部分你的HTML该元素,操纵它(使用jQuery),然后把结果返回到原来的script元素:

t = $("script[type='text/template']") 
 
container = $('<div/>').html(t.html()) 
 
container.find('h1').replaceWith('<h2>new content</h2>') 
 
t.html(container.html()) 
 

 
console.log($("script[type='text/template']").html())
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script type="text/template"> 
 
    <h1>This should be replaced</h1> 
 
    <p>Testing 123</p> 
 
</script>

+0

多个。 https://jsfiddle.net/abhitalks/magkfc8k/ – Abhitalks

+1

@Abhitalks正确:)欢迎您来voteup我原来的答复 – Dekel

+0

@Connum这是尴尬的。我一遍又一遍地尝试过的代码和刚才意识到,它并返回结果,我在文档完全加载之前运行了代码。非常抱歉,谢谢! – Tompina

0

你可以得到所有H1与:

var x = document.getElementsByTagName("h1"); 

,然后你遍历它:

for (var i = 0; i < x.length; i++) { 
    x[i].innerHTML = "text"; 
} 
+1

“text/template”元素的内容不是DOM的一部分,因此您无法在此处使用“getElementsByTagName”。 – Dekel