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

問題は、[行の追加]ボタンをクリックし、回答が[True]だった場合、すべてのボタンをオフにして、[True]ボタン(#answerTrue)のみをオンにする必要があることです。ただし、この例ではこのボタンはオンになっていません。実際、これらの4つのボタン(「True」、「False」、「Yes」、「No」)はオンになりません。「行を追加」ボタンがクリックされた後、これらの4つのボタンがオンにならない理由を誰かが知っていますか?

アップデート:

アプリケーションのURLはこちらです。アプリを使用できるようにするには、以下の手順に従ってください。

  • ステップ1:アプリケーションを開くと、ページに緑色のプラスボタンが表示され、それをクリックすると、モーダルウィンドウが表示されます。
  • ステップ2:モーダルウィンドウに検索バーがあり、「AAA」と入力して検索を送信すると、一連の行が表示されます。
  • ステップ3:最初の行で、「回答」列の下に回答がBであることがわかります。この行内の「追加」ボタンをクリックすると、モーダルウィンドウが閉じ、回答ボタンが「B」ボタンが強調表示されます。

これで正常に機能しますが、文字ボタンでのみ機能します。

  • ステップ4:緑色のプラスボタンをもう一度クリックして、今度は「true」の検索を実行します。
  • ステップ5:今回は、「Answr」列の下に答えが「True」の場合に1つの行が表示されます。[追加]ボタンをクリックして、この行を追加します
  • ステップ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 に答える