0

リンクを含むページがありますが、Javascriptで書き直す必要があります。div id = "container"内のすべてのリンクは、 "post = post-number-234"から"?id = blog&post=post-number-234"に書き換える必要があります。

現在、私はこのスクリプトを持っています:

<script type="text/javascript">
<!--
var content = document.getElementById('content');
var list = div.getElementsByTagName("A");
for( var i = 0; i < list.length; i++ ) 
{ 
  document.links[i].href = '?id=blog&' + document.links[i].href
}
// -->
</script>

これは正常に機能します。しかし、Fancybookで使用されている画像へのリンクがあります。これらのリンクはすべて、元々「img/image-name.jpg」にリンクされています。しかし、fancybookは「?id = blog&img / image-name.jpg」内の画像を検索するため、機能しなくなりました。

ディレクトリ「img」にリンクされていない、div「content」内のすべてのリンクに書き換えを適用するにはどうすればよいですか?

ありがとう!

4

3 に答える 3

1

ループ内で、href文字列に「img」が含まれているかどうかを確認し、見つからない場合にのみ変更します。

if (document.links[i].href.indexOf('img') == -1) {
  document.links[i].href = '?id=blog&' + document.links[i].href;
}
于 2012-05-12T09:17:27.787 に答える
1

これは正常に機能します

私はそう疑う...

まず、IDが「content」のDOM要素を取得します。div次に、どこにも定義されていないために失敗するはずのリンクからすべてのリンクを取得しようとしますReferenceError: div is not defined(定義されていない場合は、関連するすべてのコードを提供していません)。

それが成功する場合は、見つかったリンクを繰り返し処理し、インデックスでそれらにアクセスします。しかし、間違ったソースから。listあなたの代わりに使用していますdocument.links

すべてをまとめると...

<script>
    var container = document.getElementById("container"),
        links = container.getElementsByTagName("a"),
        i = links.length,
        href;

    while (i--) {
        href = links[i].href;

        if (href.indexOf("img/") > -1) {
            continue;
        }

        links[i].href = "?id=blog&" + href;
    }
</script>
于 2012-05-12T09:22:23.837 に答える
1

ページに次のようなリンクがあると仮定します。

<a href="img/name.jpg"><img src="img/name.jpg" /></a>
<a href="post=post-number-234">Post Title - by Author Maybe?</a>

jQueryなどのフレームワーク/ライブラリを使用しない場合は、明らかに、自分自身を変更したくない場合は、もう少し手間をかけてフィルターで除外する必要があります。だから次のようなもの:

<script>
var content = document.getElementById("content")
  , list = content.getElementsByTagName("a")
  , i = 0
  , len = list.length;

for (; i < len; i++) {
   // check for "img/" directory or image file-extensions (gif, jpg, jpeg, png)
   if (!/^img\/|\.(?:gif|jpg|jpeg|png)$/i.test(list[i].href)) {
       list[i].href = "?id=blog&" + list[i].href;
   }
}
</script>
于 2012-05-12T09:25:57.500 に答える