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

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

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

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

jQuery

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

Q&A

解決済

1回答

4089閲覧

jQueryで同一クラスの値を取得、変更してその場所に返したい。

Masanz

総合スコア12

JavaScript

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

jQuery

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

0グッド

1クリップ

投稿2019/04/09 13:18

編集2019/04/09 19:48

## 状況
商品一覧ページにある価格をjQueryを使って、各為替の価格にざっくり変更できる機能を作っています。
以下の流れで考えているのですが、

1,ユーザーが希望通貨のボタンを押す(ボタンのクラス.switch .aud)
2,jQueryで基本通貨の価格を取得(h2 .es-priceの要素に為替記号、コンマ付きの状態で1ページに10個あリます)
3,為替記号やコンマ等を外す。
4,為替APIから各レートを取って、その数値を掛けて値を戻す。

下記のコードを書いたのですが、このコードだと4の段階でページ内にある10個の金額が同じ金額になってしまい、
困っています。(全ての商品が1番最後の商品の価格に0.7掛けた金額に変更されてしまいます。)

##質問
・.text()で取得した値を変更した後に元の場所に順番通り戻す事は可能でしょうか?

##コード

HTML

1 2 <div class="wrapper"> 3      <div class="row-view"> 4 <h2> 5 <a href="https://sample.com/properties/house/">house1</a> 6 <span class="es-price">¥ 2,500,000</span> 7 </h2> 8         <p>紹介文</p> 9 </div> 10 11      .... 1ページに10件の情報 12 13 <div class="row-view"> 14 <h2> 15 <a href="https://sample.com/properties/house/">house1</a> 16 <span class="es-price">¥ 2,500,000</span> 17 </h2> 18         <p>紹介文</p> 19 </div> 20 </div> 21

jQuery

1 jQuery(function($){ 2 $('h2 .es-price').each(function() { 3 var basecur = $(this).text(); 4 basecur = basecur.replace("¥",""); 5 basecur = Number(basecur.replace(/,/g, '') ); 6 basecur = Math.round(basecur); 7 if(jQuery('.switch .aud').on('click', function(){ 8 var basecuraud = basecur * 0.7; 9 var length = jQuery('h2 .es-price').length; 10 for( var i=0; i<length; i++) { 11 jQuery('h2 .es-price').eq(i).text(basecuraud); 12 } 13 })); 14      });

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2019/04/09 16:08

HTMLも質問文に追記してください。
Masanz

2019/04/09 19:48

コメントありがとうございます。 HTMLコードを追加させて頂きました。
guest

回答1

0

ベストアンサー

onclick内で処理を記載します

javascript

1<script> 2$(function(){ 3 if($('.switch .aud').on('click', function(){ 4 $('h2 .es-price').each(function() { 5 var basecur = $(this).text(); 6 basecur = basecur.replace("¥",""); 7 basecur = parseFloat(basecur.replace(/,/g, '') ); 8 basecur = Math.round(basecur); 9 basecuraud = basecur * 0.125; 10 $(this).text(basecuraud); 11 }); 12 })); 13}); 14</script> 15 16<div class="wrapper"> 17<div class="row-view"> 18<h2> 19<a href="https://exsample.com/properties/house/">house1</a> 20<span class="es-price">2,500,000</span> 21</h2> 22<p>紹介文</p> 23</div> 24<hr> 25<div class="row-view"> 26<h2> 27<a href="https://exsample.com/properties/house/">house2</a> 28<span class="es-price">3,000,000</span> 29</h2> 30<p>紹介文</p> 31</div> 32</div> 33<div class="switch"> 34<span class="aud">jpy/aud</span> 35</div>

投稿2019/04/10 01:06

yambejp

総合スコア114843

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Masanz

2019/04/10 13:22

ありがとうございます!頂いたコードであっさりできました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問