下面的代码中有一堆字母按钮:
代码:
<?php
$a = range("A","Z");
?>
<table id="answerSection">
<tr>
<?php
$i = 1;
foreach($a as $key => $val){
if($i%7 == 1) echo"<tr><td>";
echo"<input type=\"button\" onclick=\"btnclick(this);\" value=\"$val\" id=\"answer".$val."\" name=\"answer".$val."Name\" class=\"answerBtns answers answerBtnsOff\">";
if($i%7 == 0) echo"</td></tr>";
$i++;
}
?>
</tr>
</table>
现在,以下代码可以打开答案按钮:
代码:
function addwindow(btn) {
$('#answer'+btn).addClass("answerBtnsOn");
}
但唯一的问题是上面的代码只能打开一个答案按钮。例如,如果“答案”为B
,则会查找按钮"#answerB"
并启用按钮B
。或者如果“答案”为E
,则会查找按钮"#answerE"
并启用按钮E
。
问题在于,如果有多个答案。如果“回答”为B E,
,则说明它不会启用按钮B
和E
。这是因为它试图找到不正确的按钮"#answerBE"
,它应该查找按钮"#answerB"
和按钮"#answerE"
并将它们都打开。
另一个例子是,如果“答案”为A D F,
,则它无法启用按钮A
D
和F
,因为它正在尝试查找按钮{{1} }这是不正确的,它应该找到按钮"#answerADF"
,按钮"#answerA"
和按钮"#answerD"
并将它们全部打开。
所以我的问题是如果有多个答案我怎么能打开多个按钮?我是否需要将所有按钮放在一个数组中并循环显示它们,以便它能够通过所有按钮并打开那些应该打开的按钮?
更新:
下面是调用addwindow()函数的“添加”按钮,添加按钮上方是“答案”列,显示答案行
"#answerF"
答案 0 :(得分:1)
试试这个:
function addwindow(btn) {
var arr = btn.split("");
$.each(arr, function(i, v) {
$('#answer' + v).addClass("answerBtnsOn");
})
}
答案 1 :(得分:1)
我相信,你需要这个:
function addwindow(btn) {
var answers = $.map(btn.split(''),function(chr){ return "#answer"+chr; }).join(', ');
$(answers).addClass("answerBtnsOn");
}
解释:
btn.split('') //splits btn string into char's array,
// e.g. "ADE" will become ["A","D","E"]
$.map //converts ["A","D","E"]
// to ["#answerA","#answerD","#answerE"]
join(',') //makes "#answerA, #answerD, #answerE" string
// from ["#answerA","#answerD","#answerE"] array
答案 2 :(得分:0)
听起来你正在将'btn'变量作为字符串传递。如果你能够split()字符串然后使用for()循环遍历结果数组并分配适当的类,这是可以接受的。
function addwindow(btn){
var answers = btn.split(''); // leave empty if values are not separated by a delimiter
for(var i=0; i < answers.length; i++){
$('#answer'+answers[i]).removeClass('answerBtnsOff').addClass('answerBtnsOn');
}
}
根据您的分隔符,您需要修改以下代码:
btn.split(''); // no delimiter
btn.split(' '); // space delimiter
btn.split(','); // comma delimiter
btn.split('|'); // pipe delimiter
您似乎也在逃避引号,但如果您还在使用连接,则无需这样做。
注意:与双引号和heredoc语法,变量和。不同 特殊字符的转义序列不会被扩展 以单引号字符串出现。
<?php
$i = 1;
foreach($a as $key => $val){
echo ($i % 7 == 1 ? "<tr><td>" : "");
echo '<input type="button" onclick="btnclick(this);" value="'.$val.'" id="answer'.$val.'" name="answer'.$val.'Name" class="answerBtns answers answerBtnsOff">";
echo ($i % 7 == 0 ? "</td></tr>" : "";
$i++;
}
?>