1

我有一堆来自 AZ 的字母按钮,还有 4 个其他按钮(“True”、“False”、“Yes”和“No”)

显示 4 个按钮(“True”、“False”、“Yes”和“No”)的 html 代码如下:

<td>
    <input class="answerBtns answers answerBtnsOff" name="answerTrueName"  id="answerTrue"  type="button"   value="True"    onclick="btnclick(this);"/>
    <input class="answerBtns answers answerBtnsOff" name="answerFalseName" id="answerFalse"     type="button"   value="False"   onclick="btnclick(this);"/>
    <input class="answerBtns answers answerBtnsOff" name="answerYesName"   id="answerYes"   type="button"   value="Yes"     onclick="btnclick(this);"/>
    <input class="answerBtns answers answerBtnsOff" name="answerNoName"    id="answerNo"        type="button"   value="No"      onclick="btnclick(this);"/>
    </td>

下面的代码控制一个“添加行”按钮,单击该按钮将关闭所有按钮,并且它应该只打开所需的按钮,具体取决于与答案匹配的按钮 id。

    function addwindow(btn) { 
        var answers = $.map(btn.split(''),function(chr){   return "#answer"+chr;  }).join(', ');
$('.answerBtns').removeClass('answerBtnsOff').removeClass('answerBtnsOn');
        $('.answerBtns').addClass('answerBtnsOff');
        $(answers).addClass("answerBtnsOn");
    }

问题是我点击“添加行”按钮,答案是“真”,然后它应该关闭所有按钮,只打开“真”按钮(#answerTrue)。但是对于这个例子,它没有打开这个按钮。事实上,它并没有打开这 4 个按钮(“True”、“False”、“Yes”、“No”)。有谁知道为什么单击“添加行”按钮后这4个按钮不会打开?

更新:

应用程序的 url 在这里。请按照以下步骤使用该应用程序:

  • 第一步:当你打开应用程序时,你会在页面上看到一个绿色的加号按钮,点击它会显示一个模态窗口。
  • 第2步:在模态窗口有一个搜索栏,输入“AAA”并提交搜索,你会看到一堆行出现。
  • 第 3 步:在第一行的“Answer”列下,您看到答案是 B,单击该行内的“Add”按钮,模态窗口将关闭,您将看到答案按钮已显示为“B”按钮突出显示。

现在这工作正常,但它只适用于字母按钮:

  • 第四步:再次点击绿色的加号按钮,这次执行搜索“true”;
  • 第 5 步:这一次,当“Answr”列下的答案为“True”时,您将看到一行出现。通过单击“添加”按钮添加此行
  • 第 6 步:您将看到它显示“True”和“False”按钮,但“True”按钮未突出显示,即使答案是“True”。

为什么它不突出显示这个按钮?

4

2 回答 2

1

建议,而不是:

$('.answerBtns').addClass('answerBtnsOff');
$(answers).addClass("answerBtnsOn");

尝试:

$(answers).addClass("answerBtnsOn").siblings().addClass('answerBtnsOff');

但这里的问题是answer不包含正确的按钮,而是您选择#answerT.

你的问题在这里:

var answers = $.map(btn.split(''),function(chr){   return "#answer"+chr;  }).join(', ');

尝试进行一些调试、警报,并且可能通过添加一些if. 试试这个代码

if(btn=="True" || btn=="False" || btn=="Yes" || btn=="No"){
    var answers = '#answer'+btn;
} else {
    var answers = $.map(btn.split(''),function(chr){   return "#answer"+chr;  }).join(', ');
}
于 2012-07-08T22:29:30.843 回答
0

这可能是因为您只添加了 answerBtnsOn 类,而不是删除 answerBtnsOff 类。

尝试添加:

$(answers).removeClass("answerBtnsOff");

另外,我认为您可以使用类而不是地图来选择它们:

$(".answerBtns").addClass("answerBtnsOn");
$(".answerBtns").removeClass("answerBtnsOff");
于 2012-07-08T21:38:59.860 回答