質問編集履歴
3
回答を受けて現時点の結果を貼り付けました
title
CHANGED
File without changes
|
body
CHANGED
@@ -153,4 +153,31 @@
|
|
153
153
|
});
|
154
154
|
});
|
155
155
|
|
156
|
+
```
|
157
|
+
### **さらに追記 2つめの回答を受けて**
|
158
|
+
素人考えでいじった結果となります。
|
159
|
+
お手数おかけしますがよろしくお願いいたします。
|
160
|
+
```ここに言語を入力
|
161
|
+
$(document).ready(function(){
|
162
|
+
$('select').change(function() {
|
163
|
+
|
164
|
+
// 金額入力欄をquerySelectorAllでまとめて取ってくる
|
165
|
+
|
166
|
+
let priceList = document.querySelectorAll('.price');
|
167
|
+
priceList.forEach( e => {
|
168
|
+
// 各金額入力欄の対し、予めセットしている小計対象のname値を取得
|
169
|
+
let targetSyoukeiClass = e.dataset.syoukei;
|
170
|
+
// querySelectorで小計を加算するinputを特定
|
171
|
+
let targetSyoukeiInput = document.querySelector(`input[name=${targetSyoukeiClass}]`);
|
172
|
+
// 無事取得できたら、小計inputに金額を加算する
|
173
|
+
|
174
|
+
targetSyoukeiInput.value = 0;
|
175
|
+
|
176
|
+
if(targetSyoukeiInput){
|
177
|
+
targetSyoukeiInput.value = Number(targetSyoukeiInput.value) + Number(e.value);
|
178
|
+
}
|
179
|
+
});
|
180
|
+
});
|
181
|
+
});
|
182
|
+
コード
|
156
183
|
```
|
2
ご指摘を受けて改めてScriptを貼り付けしました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -133,4 +133,24 @@
|
|
133
133
|
});
|
134
134
|
});
|
135
135
|
|
136
|
+
```
|
137
|
+
|
138
|
+
### **さらに追記 ご指摘を受けて**
|
139
|
+
ご指摘を受け変更したのですが、上手く動きませんでした。(合計値が出されなかった)
|
140
|
+
どこにミスがあるかご教示いただけますと幸いです。
|
141
|
+
```Javascript
|
142
|
+
$(document).ready(function(){
|
143
|
+
$('select').change(function() {
|
144
|
+
var syoukei= document.querySelectorAll('[name^="syoukei"]');
|
145
|
+
for( i = 0; i < syoukei.length; i++ ) {
|
146
|
+
syoukei[ i ]=0;
|
147
|
+
$(".value"+i+" input:text").each(function(){
|
148
|
+
var value[ i ] = $(this).val();
|
149
|
+
syoukei[ i ] = parseInt(value[ i ])+syoukei[ i ];
|
150
|
+
});
|
151
|
+
document.form.syoukei[ i ].value = syoukei[ i ]; // 合計を表示
|
152
|
+
});
|
153
|
+
});
|
154
|
+
});
|
155
|
+
|
136
156
|
```
|
1
上手くいかない部分やHTMLの追記をいたしました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,8 +1,10 @@
|
|
1
1
|
javascriptで計算フォームを作成しております。
|
2
|
-
複数あるvalueの合計がsyoukeiに出るようにしています。
|
2
|
+
複数あるvalue(品物の単価)の合計がsyoukeiに出るようにしています。
|
3
3
|
forでまとめたいのですが、上手くいきません。
|
4
4
|
初心者で恐縮ですが、ご教示のほどよろしくお願いいたします。
|
5
5
|
|
6
|
+
追記 下記のjavascriptは綺麗に動いた例ですが、品物が増えるとその分追記しなくてはならないため、纏められないかと思いご質問させていただきました。
|
7
|
+
|
6
8
|
```javascript
|
7
9
|
$(document).ready(function(){
|
8
10
|
$('select').change(function() {
|
@@ -39,4 +41,96 @@
|
|
39
41
|
document.form.syoukei2.value = syoukei2; // 合計を表示
|
40
42
|
});
|
41
43
|
});
|
44
|
+
```
|
45
|
+
HTMLも追記いたします。
|
46
|
+
他のscriptもありclassが乱立していますが、今回の質問では商品1~3横のinputに各商品の小計を入れることだけを目的としているためほかのscrptは記載はしておりません。必要であれば記載させていただきます。
|
47
|
+
```HTML
|
48
|
+
<form method="post" name="form">
|
49
|
+
<table border="1">
|
50
|
+
<tr>
|
51
|
+
<th>詳細</th>
|
52
|
+
<th>単価</th>
|
53
|
+
<th>数量</th>
|
54
|
+
<th>金額</th>
|
55
|
+
</tr>
|
56
|
+
|
57
|
+
<tr class="title"><td colspan="4">商品1<input type="text" name="syoukei0" class="syoukeis" value="0" disabled></td></tr>
|
58
|
+
<tr class="rows">
|
59
|
+
<td></td>
|
60
|
+
<td class="tanka" >440円</td>
|
61
|
+
<td><select name="goods1">
|
62
|
+
<option value="0" selected>0</option>
|
63
|
+
<option value="1">1</option>
|
64
|
+
</select></td>
|
65
|
+
<td class="value0"><input type="text" class="price" size="7" value="0"> 円</td>
|
66
|
+
</tr>
|
67
|
+
<tr class="title"><td colspan="4">商品2<input type="text" name="syoukei1" class="syoukeis" value="0" disabled></td></tr>
|
68
|
+
<tr class="rows">
|
69
|
+
<td></td>
|
70
|
+
<td class="tanka" >440円</td>
|
71
|
+
<td><select name="goods2">
|
72
|
+
<option value="0" selected>0</option>
|
73
|
+
<option value="1">1</option>
|
74
|
+
</select></td>
|
75
|
+
<td class="value1"><input type="text" class="price" size="7" value="0"> 円</td>
|
76
|
+
</tr>
|
77
|
+
|
78
|
+
<tr class="title"><td colspan="4">商品3<input type="text" name="syoukei2" class="syoukeis" value="0" disabled></td></tr>
|
79
|
+
<tr class="rows">
|
80
|
+
<td><font color="red">キャラ1</font></td>
|
81
|
+
<td class="tanka">605円</td>
|
82
|
+
<td ><select name="goods3">
|
83
|
+
<option value="0" selected>0</option>
|
84
|
+
<option value="1">1</option>
|
85
|
+
</select></td>
|
86
|
+
<td class="value2"><input type="text" class="price" size="7" value="0"> 円</td>
|
87
|
+
</tr>
|
88
|
+
<tr class="rows">
|
89
|
+
<td><font color="blue">キャラ2</font></td>
|
90
|
+
<td class="tanka" >605円</td>
|
91
|
+
<td ><select name="goods4">
|
92
|
+
<option value="0" selected>0</option>
|
93
|
+
<option value="1">1</option>
|
94
|
+
</select></td>
|
95
|
+
<td class="value2"><input type="text" class="price" size="7" value="0"> 円</td>
|
96
|
+
</tr>
|
97
|
+
<tr class="rows">
|
98
|
+
<td><font color="yellow">キャラ3</font></td>
|
99
|
+
<td class="tanka" >605円</td>
|
100
|
+
<td ><select name="goods5">
|
101
|
+
<option value="0" selected>0</option>
|
102
|
+
<option value="1">1</option>
|
103
|
+
</select></td>
|
104
|
+
<td class="value2"><input type="text" class="price" size="7" value="0"> 円</td>
|
105
|
+
</tr>
|
106
|
+
<a name="top"></a>
|
107
|
+
<tr >
|
108
|
+
<td colspan="3" >
|
109
|
+
<button type="button" id="hide">0円を非表示</button> 合計</td>
|
110
|
+
<td><a name="top"></a><input type="text" id="total" size="7" value="0"> 円</td>
|
111
|
+
</tr>
|
112
|
+
<tr>
|
113
|
+
<td colspan="3" >特典</td>
|
114
|
+
<td><input type="text" id="tokuten" size="7" value="0"> 枚</td>
|
115
|
+
</tr>
|
116
|
+
</table>
|
117
|
+
```
|
118
|
+
|
119
|
+
### **追記 試したこと**
|
120
|
+
見よう見まねでやろうとしましたが、上手く動かなかったのでご質問した次第でございます。
|
121
|
+
```
|
122
|
+
$(document).ready(function(){
|
123
|
+
$('select').change(function() {
|
124
|
+
var syoukei= document.getElementsByName('[name^="syoukei"]').value;
|
125
|
+
for( i = 0; i < syoukei.length; i++ ) {
|
126
|
+
syoukei[ i ]=0;
|
127
|
+
$(".value[ i ] input:text").each(function(){
|
128
|
+
var value[ i ] = $(this).val();
|
129
|
+
syoukei[ i ] = parseInt(value[ i ])+syoukei[ i ];
|
130
|
+
});
|
131
|
+
document.form.syoukei[ i ].value = syoukei[ i ]; // 合計を表示
|
132
|
+
});
|
133
|
+
});
|
134
|
+
});
|
135
|
+
|
42
136
|
```
|