回答編集履歴

2

追加

2022/12/07 02:56

投稿

Cocode
Cocode

スコア2314

test CHANGED
@@ -11,3 +11,63 @@
11
11
  // ✅正しい例
12
12
  document.body.style.backgroundImage = 'url(/images/number_1.png)';
13
13
  ```
14
+
15
+ ### 画像が金額によって切り替わらない原因
16
+ - 「水やり」ボタンを押したら取得できる`nokori`の中身は、数字ではなくHTML要素そのものです。
17
+ - 例)`<p id="nokori">目標まで600円です</p>`
18
+ - 要素に数字をかけても何もならない(`NaN`になる)ので、`else`となっているわけです。
19
+
20
+ ### 正解コード例
21
+ ```html
22
+ <body style="background-image: url(画像の相対パス1)">
23
+ <h1>money tree</h1>
24
+ <div class="savings" align="center">
25
+ 目標金額:<input type="text" id="target-amount" placeholder="目標金額を入力してください">円<br />
26
+ 現在の貯金額:<input type="text" id="current-amount" placeholder="現在の貯金額を入力してください">円<br />
27
+ <button id="btn-calc">計算</button>
28
+ <button id="btn-water">水やり</button>
29
+ <p>目標まで<span id="remaining">0</span>円です</p>
30
+ </div>
31
+ </body>
32
+ ```
33
+ ```javascript
34
+ // 必要な要素を取得
35
+ const bodyElement = document.body;
36
+ const targetElement = document.getElementById('target-amount');
37
+ const currentElement = document.getElementById('current-amount')
38
+ const btnCalc = document.getElementById('btn-calc');
39
+ const btnWater = document.getElementById('btn-water');
40
+ const remainingElement = document.getElementById('remaining');
41
+
42
+ // ボタンのクリックイベントを設定
43
+ btnCalc.addEventListener('click', showRemainingAmount);
44
+ btnWater.addEventListener('click', changeBackgroundImage);
45
+
46
+ // 目標金額までの残り金額を計算して表示する関数
47
+ function showRemainingAmount() {
48
+ const targetAmount = targetElement.value;
49
+ const currentAmount = currentElement.value;
50
+ const remainingAmount = targetAmount - currentAmount;
51
+
52
+ remainingElement.textContent = remainingAmount;
53
+ }
54
+
55
+ // 残り金額に応じて背景画像を変更する関数
56
+ function changeBackgroundImage() {
57
+ const targetAmount = targetElement.value;
58
+ const remainingAmount = remainingElement.textContent;
59
+
60
+ if (remainingAmount <= targetAmount * 0.25) {
61
+ bodyElement.style.backgroundImage = 'url(画像の相対パス1)';
62
+ } else if (remainingAmount <= targetAmount * 0.5) {
63
+ bodyElement.style.backgroundImage = 'url(画像の相対パス2)';
64
+ } else if (remainingAmount <= targetAmount * 0.75) {
65
+ bodyElement.style.backgroundImage = 'url(画像の相対パス3)';
66
+ } else if (remainingAmount <= targetAmount * 0.99) {
67
+ bodyElement.style.backgroundImage = 'url(画像の相対パス4)';
68
+ } else {
69
+ bodyElement.style.backgroundImage = 'url(画像の相対パス5)';
70
+ }
71
+ }
72
+ ```
73
+ ※動作確認をしていないためエラーが生じる可能性があります。申し訳ございません。その際はお手数をおかけいたしますが、エラーの文章をコピペして教えてください。コードを修正いたします。

1

image

2022/11/28 12:49

投稿

Cocode
Cocode

スコア2314

test CHANGED
@@ -9,5 +9,5 @@
9
9
  document.getElementById='(/images/number_1.png)';
10
10
 
11
11
  // ✅正しい例
12
- document.body.style.background = 'url(/images/number_1.png)';
12
+ document.body.style.backgroundImage = 'url(/images/number_1.png)';
13
13
  ```