Javascript:用 Div 替换所有 P 标签(没有任何库)

The*_*pha 3 javascript

下面是一个代码片段

var pTags=document.getElementsByTagName('p');
for(i=0;i<pTags.length;i++)
{
    var p=pTags[i],  div=document.createElement('div');
    div.innerHTML='P tag replaced with a div tag';
    p.parentNode.replaceChild(div, p);
}
Run Code Online (Sandbox Code Playgroud)

它应该替换所有P标签,Div但它不会替换所有标签,而是替换其中一些标签。这些red小提琴)不会被替换。

我不需要这个,但我想知道我在这里做错了什么?所以,我的问题是为什么它不以这种方式工作。希望有人能告诉我事实。

谢谢你的努力!

Mus*_*usa 7

getElementsByTagName返回一个活动节点列表,因此每次替换节点时,列表都会更改,因此您只想获取列表中的第一个节点并替换它,直到列表为空,请参阅http://jsfiddle.net/mowglisanu/eZNqn/ 4/


MCu*_*elo 6

单行方式;-)

首先,选择您想要的任何元素(在本例中为正文的所有内容)

var elem = document.getElementsByTagName('body')[0];
var target = elem.innerHTML;
Run Code Online (Sandbox Code Playgroud)

“线”

elem.innerHTML = target.replace(/(<div)/igm, '<p').replace(/<\/div>/igm, '</p>');
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助。请参阅此处的实际操作