質問編集履歴

2

コードの編集

2021/05/25 13:35

投稿

hima-mura.
hima-mura.

score42

test CHANGED
@@ -1 +1 @@
1
- checkboxアルゴリズム
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

コードの編集

2021/05/25 13:35

投稿

hima-mura.
hima-mura.

score42

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
  他に良いアルゴリズムがあれば助言をお願いします。