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

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

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

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

Q&A

解決済

1回答

1375閲覧

datasetの配列の使い方がよくわからない問題

gyoruo

総合スコア61

JavaScript

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

0グッド

0クリップ

投稿2020/08/30 11:55

以下のプログラムは、ボタンが押されたら値が加算され、もう一度同じボタンが押されたらその値を減算するプログラムなのですが、なぜこのプログラムで上手くいくのかわからないのでアドバイスをお願い致します。

また、HTMLのclassやidに'val'がないのになぜエラーにならないのでしょうか?
というか、costs.dataset['val']の意味が調べてもよくわからないので教えていただけると助かります。。。

HTML

1<div class="center fixed_cost"><span class="sum">0</span>円</div> 2 3 <div class="container"> 4 <button type="button" class="buttons">家賃<br> 5 <span class="costs">80,000</span>円 6 </button> 7 <button type="button" class="buttons">光熱費<br> 8 <span class="costs">5,000</span>円 9 </button> 10 <button type="button" class="buttons">水道代<br> 11 <span class="costs">5,000</span>円 12 </button> 13以下省略

JavaScript

1// ボタンが押された時の値を変更 2function TotalCost() { 3 const sum = document.querySelector('.sum'); 4 const btns = document.querySelectorAll('.buttons'); 5 6 btns.forEach(costs => { 7 costs.dataset['val'] = costs.querySelector('.costs').innerHTML.replace(",",""); 8 9 costs.addEventListener('click', () => { 10 let val = parseInt(costs.dataset['val']); 11 console.log(val); 12 13 sum.innerHTML = (parseInt(sum.innerHTML.replace(",","")) + val).toLocaleString(); 14 costs.dataset['val'] = -val; 15 }); 16 }); 17} 18TotalCost();

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

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

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

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

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

guest

回答1

0

ベストアンサー

HTMLのclassやidに'val'がないのになぜエラーにならないのでしょうか?

idやclassにvalが入ったものを検索するコードは全くありません。

costs.dataset['val']の意味が調べてもよくわからない

datasetは、要素ごとにdata-***という形の属性を読み書きできる仕組みです。costs.dataset['val']とすると、それはcostsdata-val属性と同じことになります。

投稿2020/08/30 12:01

maisumakun

総合スコア145208

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

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

gyoruo

2020/08/30 12:44

ご回答ありがとうございます! costs.dataset['val']の書き方で勝手にdata-valが追加されるんですね!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問