質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.51%

  • JavaScript

    20426questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • jQuery

    8161questions

    jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

特定ファイル名の画像が存在するとき、別画像に置き換えたい。

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 557

castail

score 117

特定ファイル名の画像が存在するとき、別画像に置き換えたいです。

具体的には、「.hoge1」の背景画像が「img1.jpg」のときのみ「imgA.jpg」、「.hoge2」内の画像が「img2.jpg」のときのみ「imgB.jpg」に変更したいです。

変更前

<div class="hoge1" style="img1.jpg"></div>
<div class="hoge2"><img src="img2.jpg"></div>

変更後

<div class="hoge1" style="imgA.jpg"></div>
<div class="hoge2"><img src="imgB.jpg"></div>

※便宜上「hoge」や「img」など共通文字列を使用していますが、実際はそれぞれ共通点のない固有の文字列となります。

以下のようなhtml内の文字列の置き換えの方法を参考にしたのですが、今回のようなimgのsrcなどの置き換えはできませんでした。

$(function(){
$('.hoge2 img').each(function(){
var txt = $(this).html();
$(this).html(txt.replace(/img2/g,'imgB'));
});
});

ご教授の程よろしくお願いいたします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+3

if($('.hoge1').css('backgroundImage').includes('img1.jpg')) {
  $('.hoge1').css('backgroundImage', 'url(imgA.jpg)');
}


といった感じで、.css('backgroundImage')を使えば、背景画像のcss値が取得できると思うので、'image1.jpg'が含まれていたらなどの判定でできるかと

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/02/26 16:11

    早速のご回答誠にありがとうございます。
    背景画像の置き換えはご教授いただいた内容で無事実現できました!
    なお、「img2.jpg」部分のimgのsrcの置き換え方法もご教授願えますでしょうか?
    よろしくお願いいたします。

    キャンセル

  • 2017/02/26 16:13

    if($('.hoge2 img').attr('src', 'img2.jpg')) $('.hoge2 img').attr('src', 'imgB.jpg');とかでできるのでは?

    キャンセル

  • 2017/02/26 17:16

    ご回答ありがとうございます。

    ご教授頂いた内容ですと、「img2.jpg」以外でも全て「imgB.jpg」になるようなのですが、その他の記述方法はございますでしょうか?度々恐縮ですがご教授願えれば有難いです。

    キャンセル

  • 2017/02/26 17:17

    あ、すみません。
    if($('.hoge2 img').attr('src') === 'img2.jpg') $('.hoge2 img').attr('src', 'imgB.jpg');
    ですね。

    キャンセル

  • 2017/02/26 17:22

    ご回答ありがとうございます。

    ご教授頂いた内容で無事実現できました!
    この度は度々のご質問にご丁寧にご回答頂き誠にありがとうございました!

    キャンセル

+1

リスト化しておいて、合致したら置き換えては?

$(function(){
  var imglist={"img1.jpg":"imgA.jpg","img2.jpg":"imgB.jpg"};
  var reg=new RegExp('^('+Object.keys(imglist).join('|')+')$',"g");
  var reg=new RegExp(Object.keys(imglist).join('|'),"g");
  console.log(reg)
  $('.hoge1,.hoge2').each(function(i){
    if(r=$(this).css('backgroundImage').match(reg)) {
      $(this).css('backgroundImage', 'url('+imglist[r[0]]+')');
    }
    if($(this).find('img').length>0){
      $(this).find('img').each(function(){
        if(r=$(this).attr('src').match(reg)) {
          $(this).attr('src',imglist[r[0]]);
        }
      });
    }
  });
});
<div class="hoge1" style="background-Image:url(img1.jpg)"></div>
<div class="hoge2"><img src="img1.jpg"><img src="img2.jpg"><img src="img11.jpg"><img src="img2.jpg"></div>

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/02/26 17:24

    ご回答ありがとうございます。

    せっかくご回答頂いたにも関わらず恐縮ですが、今回は先にご回答頂いていた「turbgraphics200」様をベストアンサーとさせて頂きます。
    何卒ご容赦下さいませ。

    キャンセル

同じタグがついた質問を見る

  • JavaScript

    20426questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • jQuery

    8161questions

    jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。