質問編集履歴
2
コードの編集
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
|
1
|
+
htmlのclassに入れる値の文字列の連結
|
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
コードの編集
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
|
他に良いアルゴリズムがあれば助言をお願いします。
|