Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何打开多个按钮?_Php_Jquery - Fatal编程技术网

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'));
    }
});