0

リンクをその innerHTML に置き換えたいのですが、どうすればよいですか?

例:

Bla bla bla <a href="#nogo">No link here</a> bla bla bla

なる必要があります

Bla bla bla No link here bla bla bla

ノードをそのinnerHTMLに置き換えようとしましたが、ノード自体のテキストを取得できません..

正規表現を使用する必要があると思いますが、方法がわかりません。

編集: 迅速な回答をありがとうございました! 私はまだそれを正しく理解できないようです。さらに多くのことが起こっているようです。

プロトタイプjsも使用しています。

リンクを含む可能性のあるテキストを取得しました。テキストにリンクが含まれている場合は、そのリンクを innerHTML に置き換える必要があります。次のようになります。

<td id="text">This is some text <a href="/link/Go_%28To%29" title="Go (to)">goto</a>. Some more text.</td>

テキストにリンクが含まれているかどうかを確認するために hasChildNodes() を使用しようとしましたが、テキストにリンクやその他の要素が含まれていない場合でも、常に yes が返されます。そこで、テキストもノードとみなされるのではないかと思い、childElements[1] を試してみました。それは undefined を返します。したがって、リンクはテキストノードのノードである可能性があります。何もない!私はこのデータをスクレイピングし、JSON を評価しているので、そこから奇妙さが生じる可能性があります。ただし、応答の残りの部分で DOM をウォークすることはうまくいきます。

しかし、私が警告するとき

$('text').childElements()[0]

実際のhrefはアラートを受け取ります! (localhost//link/Go_%28To%29)

$('text'.childElements()[0].up() は、実際の td 親要素に到達します。

だから私は使用しています

if($('text').childElements()[0])

テキストにリンクが含まれているかどうかを確認します。

これは少し話題から外れていると思いますが、実際には a 要素を正しく取得できません。任意のヒント?多分正規表現が最良の選択肢ですか?

4

6 に答える 6

0

または別の方法で、リンクを無効にします(jqueryなし、私はそれが嫌いです):

テストリンクを作成します。

javascript:var a=document.createElement("a");a.href="#nogo";a.innerText="NOGO";document.body.appendChild(a);void(0);

href属性の設定を解除します。

javascript:for(var i=0;i<document.links.length;i++)if(document.links[i].hash.toLowerCase()=="#nogo")document.links[i].removeAttribute("href");void(0);

リンクはまだそのスタイルを持っていることに注意してください、あなたはそれもリセットする必要があります

于 2009-11-07T03:11:41.267 に答える
0

要するに、これはあなたの仕事をします:

var a = document.links;

for( var x = 0; x < a.length; x++ ){

a[x].outerHTML = a[x].innerHTML; x-- };

または、以前のパラドックスの代わりに、「純粋なスクリプトの魔法」、または将来の証明の古典を使用できます。

var a = document.links;
while( a.length > 0 ){ a[0].outerHTML = a[0].innerHTML }
于 2011-01-29T21:27:22.017 に答える
0

最後に、私は醜い問題を解決しましたreplace(/<\/?[^>]+(>|$)/g, "\n")。私がうまく文書化していない他の多くのことが起こっていました、私のせいです。

于 2009-11-16T21:36:03.490 に答える
0

この種の作業には、Javascript ライブラリの 1 つを使用することを強くお勧めします。

これは、トリックを行う Prototype を使用したワンライナーです。

$$('a').each( function( a ) { a.replace( a.innerHTML ) } )

ページ内の各 <a> タグを繰り返し処理し、その innerHTML に置き換えます。

jQuery は、この種のことにも最適です。

于 2009-11-06T21:51:08.530 に答える