teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

コードの編集

2021/05/25 13:35

投稿

hima-mura.
hima-mura.

スコア42

title CHANGED
@@ -1,1 +1,1 @@
1
- checkboxアルゴリズム
1
+ htmlclassに入れる値の文字列の連結
body CHANGED
@@ -1,5 +1,20 @@
1
1
  ```
2
+ // sample.html
3
+ {foreach $nums as $num name=loop}
4
+ // $nums=[1,2,3];
5
+ <ul>
6
+ <li class="value". {$num}>{$num}</li> // classの書き方がおかしい?
7
+ <li class="value" + {$num}>{$num}</li> // 一応別の書き方でもダメ
8
+ </ul>
9
+ {/foreach}
2
10
 
11
+ // sample.js(jQuery使用)
12
+ $('.value1').text('1は変更完了'); // '1は変更完了'の文字が表示されず 1 が表示される
3
13
  ```
4
-
14
+ smartyを使用してPHPから値を持ってきて、htmlのクラス内の値に反映させたい。
15
+ やりたいこととしては
16
+ <li class="value1">One</li>
17
+ <li class="value2">Two</li>
18
+ <li class="value3">Three</li>
19
+ という感じでclassを生成したいです。なお正常に$numsの値はhtmlに渡せています。
5
- 他に良いアルゴリズムがあれば助言をお願いします。
20
+ 助言をお願いします。

1

コードの編集

2021/05/25 13:35

投稿

hima-mura.
hima-mura.

スコア42

title CHANGED
File without changes
body CHANGED
@@ -1,51 +1,5 @@
1
1
  ```
2
- // sample.html
3
- <body>
4
- <ul class="check_parts">
5
- <label><input type="checkbox" value="1" name="check">One</label>
6
- <label><input type="checkbox" value="2" name="check">Two</label>
7
- <label><input type="checkbox" value="3" name="check">Three</label>
8
- <label><input type="checkbox" value="4" name="check">Four</label>
9
- <label><input type="checkbox" value="5" name="check">Five</label>
10
- <label><input type="checkbox" value="6" name="check">Six</label>
11
- <label><input type="checkbox" value="7" name="check">Seven</label>
12
- <label><input type="checkbox" value="8" name="check">Eight</label>
13
- </ul>
14
- </body>
15
2
 
16
- // sample.js(jQueryを使用している)
17
- const lis=[[1,2,3],[2,3,4],[3,4,5],[4,5,6],[5,6,7],[6,7,8],
18
- [7,8,9],[8,9,10]];
19
- // checkboxの即時イベント (今回は、lis.length == 8 の時)
20
- $('[name="check"]').change(function(){
21
- var check_value= $(this).val(); // その時チェックされたボックスのvalue
22
- var checked_num= $('[name="check"]:checked').length; // チェックされているボックスの数
23
-
24
- // チェックされたボックスに対応するindexを持つ配列(lis)の中身を表示したい
25
- (※)
3
+ ```
26
- })
27
4
 
28
-
29
- // (※)lengthの値が少ないときにやっていた処理
30
- // (lis.length ==2 value=1,2の時)
31
- let check_values=[];
32
- $('[name="check"]:checked').each(function(index,element){
33
- check_values.push(Number($(element).val()));
34
- });
35
- sum= cal_sum(check_values); // 関数cal_sumは引数の配列の中身の合計を出す
36
- switch(sum){
37
- case 1: // Oneのみにチェック
38
- alert(lis[0]);
39
- break;
40
- case 2: // Twoのみにチェック
41
- alert(lis[1]);
42
- break;
43
- case 3: // 両方にチェック
44
- alert(lis[0] + lis[1]);
45
- break;
46
- default:
47
- alert('Error');
48
- break;
49
- ```
50
- 以前はチェックボックスの数が少なかったのもあり、(※)の方法でやっていたのですが、チェックボックスの数が増えると分岐が多くなり、コードが無駄に長くなってしまいます。自分でも考えてみたのですが、スマートなコードが思いつきません。
51
5
  他に良いアルゴリズムがあれば助言をお願いします。