2016-03-07 94 views
0

有以下HTML代碼:使用替換字符串內容的HTML元素本地JS

<body> 
    <menu> 
    </menu> 
    ... other html 
</body> 

我需要更換<menu>標籤與可變的HTML內容。我知道如何使用帶有內容的字符串變量(變量'template')來更改innerHTML;

menu.innerHTML = template; 

變量'template'包含'<ul class="menu"></ul>'。至於結果,我想有以下HTML:

<body> 
    <ul class="menu"> 
    </ul> 
    ... other html 
</body> 
+0

'使用本地JS'沒有jQuery的? –

+2

既然你知道'innerHTML',你可能有興趣知道有一個相應的['outerHTML'](https://developer.mozilla.org/en-US/docs/Web/API/Element/outerHTML)。 –

+1

@JamesThorpe這個(加一個小例子)應該可能是一個答案,而不是一個評論。 –

回答

1

嘗試:

var body = document.getElementsByTagName('body')[0]; 
body.innerHTML = body.innerHTML.replace(/<menu>[\s\S]*?<\/menu>/, template); 
2

你提到innerHTML;有一個相應的outerHTML property,如果設置,將取代元素,並與您的更新所有的孩子:

var menu = document.getElementsByTagName('menu')[0]; 
menu.outerHTML = template; 
0

試試這個

var str = '<ul class="menu"></ul>'; 
var menu = document.getElementsByName('menu'); 
var parentMenu = menu.parentNode; 
parentMenu.removeChild(menu); 
parentMenu.innerHTML = str + parentMenu.innerHTML; 
0

試試這個

var elem = document.getElementsByTagName('body')[0]; // Select any element you want. 
var target = elem.innerHTML; 
elem.innerHTML = target.replace(/(<menu)/igm, '<ul class="menu"').replace(/<\/menu>/igm, '</ul>');