1

以下はコードスニペットです

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);
}

すべてのPタグをに置き換える必要Divがありますが、一部を除いてすべてを置き換えるわけではありません。それらredフィドル)は置き換えられていません。

これは必要ありませんが、ここで何が間違っているのか知りたいですか?だから、私の質問は、なぜそれがこのように機能していないのかということです。誰かが私に事実を教えてくれることを願っています。

がんばってくれてありがとう!

4

2 に答える 2

4

getElementsByTagNameライブノードリストを返すため、ノードを置き換えるたびにリストが変更されるため、リストの最初のノードのみを取得し、リストが空になるまで置き換えます。http://jsfiddle.net/mowglisanu/eZNqn/を参照してください。 4/

于 2012-11-15T02:24:35.897 に答える
3

一行の方法;-)

まず、必要な要素を選択します(この場合、本文のすべてのコンテンツ)

var elem = document.getElementsByTagName('body')[0];
var target = elem.innerHTML;

この線"

elem.innerHTML = target.replace(/(<div)/igm, '<p').replace(/<\/div>/igm, '</p>');

それがお役に立てば幸いです。ここで実際の動作を参照してください

于 2013-06-06T15:46:49.190 に答える