Php 如何打开多个按钮?
在下面的代码中有一堆字母按钮:Php 如何打开多个按钮?,php,jquery,Php,Jquery,在下面的代码中有一堆字母按钮: <?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\
<?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>
下面是单击“添加”按钮时从列中检索“答案”的代码:
echo '<td class="answertd">'.htmlspecialchars($searchAnswer[$key]).'</td>';
echo "<td class='addtd'><button type='button' class='add' onclick=\"parent.addwindow('$searchAnswer[$key]');\">Add</button></td></tr>";
但唯一的问题是上面的代码只能打开一个单独的应答按钮。例如,如果“应答”为B,则它将打开应答按钮B,这是正常的,或者如果“应答”为E,则它能够打开应答按钮E
问题是如果有多个答案。如果“应答”为BE,则不会打开按钮B和E;如果“应答”为ADF,则不会打开按钮ADF和F
所以我的问题是,如果有多个答案,如何打开多个按钮
演示:
单击以查看演示,请按照以下步骤操作,以便使用演示:
- 步骤1:当您打开应用程序时,您会在屏幕上看到一个绿色的加号按钮 页面,单击它,它将显示一个模式窗口
- 步骤2:在模态窗口中有一个搜索栏,输入“AAA”并 提交搜索,您将看到一堆行出现
- 步骤3:在第一行中,您可以在“回答”栏下看到 答案是B,点击该行内的“添加”按钮,模式 窗口将关闭,您将看到应答按钮已关闭 显示时突出显示“B”按钮
- 第4步:再次单击绿色加号按钮并执行相同操作 搜索“AAA”
- 步骤5:这次选择一行,该行在 “答案”列,例如第三行的“答案”下有答案“A C” 专栏。单击“添加”按钮添加此行
- 步骤6:您将看到它显示相关按钮,但 不打开任何回答按钮、“A”按钮和“C”按钮 未以绿色突出显示。这就是我面临的问题
//I can't use the toggle method you have mentioned because there is a suitable reason for this (long story)
if ($(btn).hasClass("answerBtnsOn")) {
$(btn).removeClass("answerBtnsOn").addClass("answerBtnsOff");
return false;
}
if ($(btn).hasClass("answerBtnsOff")) {
$(btn).removeClass("answerBtnsOff").addClass("answerBtnsOn");
return false;
}
//When "Add" button is clicked, it should turn on correct buttons
function addwindow(condition) {
$('input[type=button]').each(function(){
if (condition){
$(this).addClass('correct');
}
});
}
HTML代码与问题顶部的HTML代码相同您需要使用类而不是ID,并为所有正确答案提供相同的类,因此所有正确答案将获得类。正确,然后在jquery中:
$('.correct').addClass("answerBtnsOn");
编辑:
在评论中回答您的问题-是的,您应该创建一个按钮数组,在其上运行并将.correct
类添加到所有正确答案中
还可以从以下位置更改代码:
if ($(btn).hasClass("answerBtnsOn")) {
$(btn).removeClass("answerBtnsOn").addClass("answerBtnsOff");
return false;
}
if ($(btn).hasClass("answerBtnsOff")) {
$(btn).removeClass("answerBtnsOff").addClass("answerBtnsOn");
return false;
}
致:
它应该用更少的代码实现同样的功能
EDIT2:
循环应该是这样的:
$('input[type=button]').each(function(){
if (condition){
$(this).addClass('correct'));
}
});
如果答案正确,则条件为真。这是修改后的代码。首先,我们初始化php变量:
$a=范围(“a”、“Z”);
$correct=“ADERW”//一些带有正确字母的字符串(也称为答案)
现在,我们将javascript函数放入页面头部(或外部文件):
var-oanswers=new Object();//此对象的属性命名为正确的字母
var回答=“”//一串
对于(var i=0;iHi,此代码将打开所有答案按钮,我只希望选中的答案按钮打开on@user1490145这是一个很好的解决方案。您只需将for
循环中的.correct
类分配给所有正确答案。@Stano我对循环很糟糕,您能告诉我如何分配吗?请为每个循环分配正确的类所以我知道这是为了将来?@user1490145将代码张贴在您检查答案是否正确的地方,这样我们就可以告诉您需要更改的内容您看过我的答案了吗?它包含了您需要的所有内容。您将$correct=“ADERW”放在哪里,是否要将该支持更改为插入所有字母,例如$correct=“ABCD…”;或者它是否需要为空?此网格正好有5个正确答案A、D、E、R、W和21个错误答案B、C、F、G、H等。如何使其更具动态性,因为它可以是3个正确答案“A D F”,也可以是2个正确答案“G N”或者可能是更多或更少的答案?@user1490145使它更具活力。我理解正确吗,那些“正确的答案”是从php获得的,还是应该在javascript中随机生成?条件是什么?如果答案正确,您需要用返回tru的实际条件替换条件。我尝试了更正代码来执行此操作:$('#answer'+btn).each(function(){if($('#answer'+btn).addClass('answerBtnsOn'){$(this).addClass('correct');}}});
但它仍然只打开单个答案的按钮,而不打开多个答案的按钮
if ($(btn).hasClass("answerBtnsOn")) {
$(btn).removeClass("answerBtnsOn").addClass("answerBtnsOff");
return false;
}
if ($(btn).hasClass("answerBtnsOff")) {
$(btn).removeClass("answerBtnsOff").addClass("answerBtnsOn");
return false;
}
$(btn).toggleClass("answerBtnsOn");
$(btn).toggleClass("answerBtnsOff");
$('input[type=button]').each(function(){
if (condition){
$(this).addClass('correct'));
}
});