2011-01-18 11 views
0

jqueryとjavascriptを使用してDOM(メモリ内のWebページ)内のすべての単語を置き換える必要があります。Javascriptすべての単語を置換する

一つの試みである

<html> 
    <head> 
     Bye to all 
    </head> 
    <body> 
     Bye to all 
    </body> 
</html> 

しかし、タグを変更することなく(THEREで唯一のVALUES):

jQuery.fn.replaceEachOne = function (objective, rep) { 
    return this.each(function(){ 
       $(this).html($(this).html().replace(new RegExp('(\\s'+objective+'\\s(?![[\\w\\s?&.\\/;#~%"=-]*>]))', "ig"), rep)); 
      } 
     ); 
} 
この中に、

<html> 
<head> 
    Hi to all 
</head> 
<body> 
    Hi to all 
</body> 
</html> 

:私はこれを変換する必要があります

しかし、私はそれを置く場合、タグの値を置き換え、ページを壊す。

ヘルプ!!!

+0

@itchy:点2については、jQueryの質問に記載されています。 – user113716

+0

@patrick dw:ああ、それを逃した。ありがとう。 – glomad

+0

うん!私はjqueryを使うことができます。 – Caipivara

答えて

0

...みんなに

おかげで...

jQuery.fn.replaceEachOne = function (objective, reposition) { 
    this.contents().each(function(){ 
     if (this.nodeType == Node.ELEMENT_NODE) { 
      $(this).replaceEachOne(objective, reposition); 
     } else if (this.nodeType == Node.TEXT_NODE) { 
      var label = document.createElement("label"); 
      label.innerHTML = this.nodeValue.replace(objective, reposition); 
      this.parentNode.insertBefore(label, this); 
      this.parentNode.removeChild(this); 
     } 
    }); 
} 
1

ヘッダーには、新しいテキストですべてを置き換えるのではなく、他の要素が存在すると推測されます。

var element = document.getElementsByTagName('html')[0]; 
element.innerHTML = element.innerHTML.replace('Hi to all', 'Bye to all'); 

したい場合も、正規表現に置き換えることができ、引用符で「こんにちはすべてに」になり、非効率的とはいえ、それを行うだろうこの

$(function(){ 
    var element = $('body, head').find('*:contains("Hi to all")'); 
    element.html('Bye to all'); 
}); 
+0

いいえ、それは動作しません:(。コンテンツには "すべてにこんにちは"以上のものが含まれている可能性があります – Caipivara

+0

コンテンツを取得するvar content = element.html();次に文字列を置き換えますcontent.replace( 'Hi' 、 'Bye'); –

+0

私は何をしているのですか? – Caipivara

0

一つの方法のようなものを試してみてください。

+0

私は正しく理解していません、もっと教えていただけますか?document.getElementsByTagName( 'html')[0] – Caipivara

+0

@Daniel GR document.getElementsByTagName ()は、指定されたタグ名 'html'を持つすべての要素へのポインタの配列を返します。それらのうちの1つしかないので、最初のもの([0])のみが取り込まれ、element.innerHTMLになりますそのタグ内のHTMLテキストを取得および設定するために使用され、2行目はelement.innerHTMLのreplaceメソッドを使用してelement.innerHTMLに割り当てます。 – eds

1

タグを変更したくない場合、なぜテキストだけでなく「html」を変更するのですか?最後に

 
jQuery.fn.replaceEachOne = function (objective, rep) { 
    return this.each(function(){ 
       $(this).text($(this).text().replace(new RegExp('(\\s'+objective+'\\s(?![[\\w\\s?&.\\/;#~%"=-]*>]))', "ig"), rep)); 
      } 
     ); 
} 
+0

すべてのタグを消去してテキストをテキスト!pのようなページが表示されますテキストまたは私が間違っていることは何ですか? – Caipivara

+0

..ok、そうだね。それをテストしていない –

関連する問題