質問編集履歴
2
コードの編集
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
htmlのclassに入れる値の文字列の連結
|
test
CHANGED
@@ -1,9 +1,39 @@
|
|
1
1
|
```
|
2
|
+
|
3
|
+
// sample.html
|
4
|
+
|
5
|
+
{foreach $nums as $num name=loop}
|
6
|
+
|
7
|
+
// $nums=[1,2,3];
|
8
|
+
|
9
|
+
<ul>
|
10
|
+
|
11
|
+
<li class="value". {$num}>{$num}</li> // classの書き方がおかしい?
|
12
|
+
|
13
|
+
<li class="value" + {$num}>{$num}</li> // 一応別の書き方でもダメ
|
14
|
+
|
15
|
+
</ul>
|
16
|
+
|
17
|
+
{/foreach}
|
2
18
|
|
3
19
|
|
4
20
|
|
21
|
+
// sample.js(jQuery使用)
|
22
|
+
|
23
|
+
$('.value1').text('1は変更完了'); // '1は変更完了'の文字が表示されず 1 が表示される
|
24
|
+
|
5
25
|
```
|
6
26
|
|
27
|
+
smartyを使用してPHPから値を持ってきて、htmlのクラス内の値に反映させたい。
|
7
28
|
|
29
|
+
やりたいこととしては
|
8
30
|
|
31
|
+
<li class="value1">One</li>
|
32
|
+
|
33
|
+
<li class="value2">Two</li>
|
34
|
+
|
35
|
+
<li class="value3">Three</li>
|
36
|
+
|
37
|
+
という感じでclassを生成したいです。なお正常に$numsの値はhtmlに渡せています。
|
38
|
+
|
9
|
-
|
39
|
+
助言をお願いします。
|
1
コードの編集
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,101 +1,9 @@
|
|
1
1
|
```
|
2
|
-
|
3
|
-
// sample.html
|
4
|
-
|
5
|
-
<body>
|
6
|
-
|
7
|
-
<ul class="check_parts">
|
8
|
-
|
9
|
-
<label><input type="checkbox" value="1" name="check">One</label>
|
10
|
-
|
11
|
-
<label><input type="checkbox" value="2" name="check">Two</label>
|
12
|
-
|
13
|
-
<label><input type="checkbox" value="3" name="check">Three</label>
|
14
|
-
|
15
|
-
<label><input type="checkbox" value="4" name="check">Four</label>
|
16
|
-
|
17
|
-
<label><input type="checkbox" value="5" name="check">Five</label>
|
18
|
-
|
19
|
-
<label><input type="checkbox" value="6" name="check">Six</label>
|
20
|
-
|
21
|
-
<label><input type="checkbox" value="7" name="check">Seven</label>
|
22
|
-
|
23
|
-
<label><input type="checkbox" value="8" name="check">Eight</label>
|
24
|
-
|
25
|
-
</ul>
|
26
|
-
|
27
|
-
</body>
|
28
2
|
|
29
3
|
|
30
4
|
|
31
|
-
// sample.js(jQueryを使用している)
|
32
|
-
|
33
|
-
const lis=[[1,2,3],[2,3,4],[3,4,5],[4,5,6],[5,6,7],[6,7,8],
|
34
|
-
|
35
|
-
[7,8,9],[8,9,10]];
|
36
|
-
|
37
|
-
// checkboxの即時イベント (今回は、lis.length == 8 の時)
|
38
|
-
|
39
|
-
$('[name="check"]').change(function(){
|
40
|
-
|
41
|
-
var check_value= $(this).val(); // その時チェックされたボックスのvalue
|
42
|
-
|
43
|
-
var checked_num= $('[name="check"]:checked').length; // チェックされているボックスの数
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
// チェックされたボックスに対応するindexを持つ配列(lis)の中身を表示したい
|
48
|
-
|
49
|
-
|
5
|
+
```
|
50
|
-
|
51
|
-
})
|
52
6
|
|
53
7
|
|
54
8
|
|
55
|
-
|
56
|
-
|
57
|
-
// (※)lengthの値が少ないときにやっていた処理
|
58
|
-
|
59
|
-
// (lis.length ==2 value=1,2の時)
|
60
|
-
|
61
|
-
let check_values=[];
|
62
|
-
|
63
|
-
$('[name="check"]:checked').each(function(index,element){
|
64
|
-
|
65
|
-
check_values.push(Number($(element).val()));
|
66
|
-
|
67
|
-
});
|
68
|
-
|
69
|
-
sum= cal_sum(check_values); // 関数cal_sumは引数の配列の中身の合計を出す
|
70
|
-
|
71
|
-
switch(sum){
|
72
|
-
|
73
|
-
case 1: // Oneのみにチェック
|
74
|
-
|
75
|
-
alert(lis[0]);
|
76
|
-
|
77
|
-
break;
|
78
|
-
|
79
|
-
case 2: // Twoのみにチェック
|
80
|
-
|
81
|
-
alert(lis[1]);
|
82
|
-
|
83
|
-
break;
|
84
|
-
|
85
|
-
case 3: // 両方にチェック
|
86
|
-
|
87
|
-
alert(lis[0] + lis[1]);
|
88
|
-
|
89
|
-
break;
|
90
|
-
|
91
|
-
default:
|
92
|
-
|
93
|
-
alert('Error');
|
94
|
-
|
95
|
-
break;
|
96
|
-
|
97
|
-
```
|
98
|
-
|
99
|
-
以前はチェックボックスの数が少なかったのもあり、(※)の方法でやっていたのですが、チェックボックスの数が増えると分岐が多くなり、コードが無駄に長くなってしまいます。自分でも考えてみたのですが、スマートなコードが思いつきません。
|
100
|
-
|
101
9
|
他に良いアルゴリズムがあれば助言をお願いします。
|