0

サムネイルをクリックすると大きなサイズまたはジャンボサイズの画像を表示するユーザー設定チェックボックスを備えた画像ギャラリーを作成しています。ページに次のようなフォーム要素があります。

<input type="checkbox" name="targetbox" id="pref"
    onclick="supersize(this.checked);">
<label for="pref">Supersize Pics</label>

次のようなリンクとサムネイルもあります。

<a href="images/large/image1.jpg"><img src="images/thumbs/image1.jpg" /></a>

私に問題を引き起こしているのは JavaScript です。これまでにまとめたものは次のとおりです。

<script language="JavaScript">
    function supersize(checkme) {
        if (checkme)
            where = "images/super/";
        else
            where = "images/large/";

        for (var i=0; i<=(document.links.length-1); i++) {
            document.links[i].href = where;
        }
    }
</script>

これによりリンクが置き換えられますが、必要な方法ではありません。明らかに、これは全体を置き換えますhref。「image1.jpg」を保持する必要があるため、新しいリンクは「images/super/image1.jpg」のようになります。配列を使用するか、URLを2つの部分に分割する必要があると確信しています。それは私が理解するのに苦労している部分です。どんな助けでも大歓迎です。

4

3 に答える 3

0

シンプルなものを使用することをお勧めしますreplace()

var href = document.links[i].href;
if (href.indexOf('super') > -1){
    document.links[i].href = href.replace('super','large');
}
else {
    document.links[i].href = href.replace('large','super');
}

もちろん、これは単にlarge文字列を文字列に置き換えるsuperか、その逆になります。だから、あなたifに合わせて調整してください。

参考文献:

于 2012-05-21T23:16:29.460 に答える
0

replace()最後の値がわかっている場合は、次を使用できます。

document.links[i].href = document.links[i].href.replace("last/value/goes/here/", where);
于 2012-05-21T23:16:56.297 に答える
0

この機能を試してみてください。

hrefLink.lastIndexOf('/')+1は最後の「/」の位置を取得し、.substr() は画像名を取得します。これは後で必要なものに追加できます!

<script language="JavaScript">
   function supersize(checkme) {
      if (checkme)
         where = "images/super/";
      else
         where = "images/large/";
      for (var i=0; i<=(document.links.length-1); i++) {
         hrefLink = document.links[i].href;     
         imgName =  hrefLink.substr(hrefLink.lastIndexOf('/')+1);
         document.links[i].href = where+imgName;
      }
   }
</script>

このようにして、コンテキスト内の「スーパー」や「ラージ」などのハードコードされた単語から関数を独立させます。

乾杯、ハルシャ。

于 2012-05-21T23:23:34.113 に答える