0

異なるドキュメントへの複数のリンクがあるページを設定しています。リンクの名前はリンク先のドキュメントと一致するため、下線が引かれたものの内側のhtmlを取得し、その周りにリンクタグを生成して、リンクに特定の各リンク名を入力するスクリプトを作成すると思いました。

私が書いたスクリプトは、1回だけ実行され、すべてのリンクをそれぞれ1つの同一のリンクで更新することを除いて、正常に実行されます。各インスタンスを取得して個別に変更する方法はありますか?

説明をぶち壊してしまったらごめんなさい!

これが私の現在のコードです:

<u>Link1</u>
<u>Link2</u>

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>

<script>
innerU = $("u").html();
$("u").html("<a href=mywebsite.com/" + innerU + ".pdf>" + innerU + "</a>");
</script>
4

4 に答える 4

4

jQuery のeach()を使用して、必要な変換を<u>ページ内の各要素に適用できます。このようなもの:

$("u").each(function() {
    var innerU = $(this).html();
    $(this).html("<a href='mywebsite.com/" + innerU + ".pdf'>" + innerU + "</a>");
});

EDIT : 有効な HTML を生成するために、href 値の周りに引用符を追加しました。気づいてくれてありがとうKolink 。

于 2013-02-05T19:26:17.457 に答える
3

代わりにこれを試してください:

(function() { // create a closure to avoid leaking variables
   var tags = document.getElementsByTagName("u"), l = tags.length, i, t, a;
   for( i=0; i<l; i++) {
      a = document.createElement('a');
      a.href = "http://mywebsite.com/"+tags[i].firstChild.nodeValue+".pdf";
      a.appendChild(tags[i].firstChild);
      tags[i].appendChild(a);
   }
})();

これはいくつかの理由で優れています。

  1. これは標準の JavaScript であるため、数百倍高速に実行されます
  2. グローバルスコープを汚染する変数を避けるためにクロージャーを使用します
  3. ではなくDOMメソッドを使用しますinnerHTML(これはjQueryが.html()使用するものです)
  4. テキストノードをテキストとして扱います。これは、そこにあるような HTML エンティティがある場合に重要です&eacute;
于 2013-02-05T19:28:37.453 に答える
1

これでうまくいくはずです。

$("u").each(function () {

    var innerU = $(this).html();
    $(this).html("<a href=mywebsite.com/" + innerU + ".pdf>" + innerU + "</a>");

});

ただし、コードには多くの「誤り」があります。たとえば、<u>タグを使用してリンクを生成しますか? anhors を直接使用して、次のように href 属性を動的に設定しないのはなぜですか。

<a href="#" class='coollink'>Link1</a>
<a href="#" class='coollink'>Link2</a>

<script>
$("a.coollink").each(function () {
    $(this).attr("href", "//mywebsite.com/" + $(this).html() + ".pdf");
});
</script>
于 2013-02-05T19:26:21.627 に答える
-2

JQuery の.each()メソッドを使用できます。

$('u').each(function(){
    innerU = $(this).html();
    $(this).html("<a href=mywebsite.com/" + innerU + ".pdf>" + innerU + "</a>");
});

于 2013-02-05T19:33:48.420 に答える