1

これは初心者の質問です。私はラジオボタンのjqueryのものを検索しましたが、動的なラジオボタンなどがたくさんあるので混乱します。とにかく、単純な Show/Hide div を実行しようとしています。

しかし、何らかの理由で、私のコードは、選択されているものに関係なく、ラジオボタンに対して常に同じ値「3」を返します。

だからここに私のhtmlがあります:

<script type="text/javascript" src="jquery-1.10.1.min.js"></script>
<script src="testjq.js"></script>
</head>

<body>
<div id="radios">


    <input type="radio" id="radio1" name="radBut" checked="checked" value="1">
    1
  <br>

    <input type="radio" id="radio2" name="radBut" value="2">
    2
  <br>

    <input type="radio" id="radio3" name="radBut" value="3">
    3<br>

    <span id="VAL">value is = </span>
  <br>

</div>
<div id="story1">
Story 1
</div>
<div id="story2" style="display:none">
Story 2
</div>
<div id="story3" style="display:none"> 
Story 3
</div>

これがtestjq.jsにあるjQuery/javaです

$(document).ready(function() {
    var testVar = 1;
        $('input:radio[name=radBut]:checked').val(); {
            var testVar = $(this).val();
        }
        if (testVar = 3){
            $("#story3").show();
            $("#story2").show();
            $("#story1").show();
            }
        else if (testVar = 2){
            $("#story3").hide();
            $("#story2").show();
            $("#story1").show();
            }
        else {
            $("#story3").hide();
            $("#story2").hide();
            $("#story1").show();
        }
        $('#VAL').append(testVar);

});

私が間違っていたことについて何か提案はありますか?

4

4 に答える 4

5

このチャンクはここにあります:

$('input:radio[name=radBut]:checked').val(); {
        var testVar = $(this).val();
}

次のようにする必要があります。

testVar = $('input:radio[name=radBut]:checked').val();

この変数は既に宣言されているため、再宣言する必要はありません。

また、すべてのif条件には 1 つしかなく=、2 つ必要です==

于 2013-06-24T17:14:40.440 に答える
3
if (testVar = 3){

つまり、本質的には「セットtestVarして3から返すtrue」という=のは、が代入演算子であるためです。等値演算子が必要です==

if (testVar == 3){

同様に、

else if (testVar = 2){

これには、 への同じ変更が必要==です。

また、これを見てください:

$('input:radio[name=radBut]:checked').val(); {
    var testVar = $(this).val();
}

これは有効な JS ですが、あなたが考えていることはしません。「チェックボックスの値を取得し、無視してからofに設定testVarします」と書かれています。これはあなたが意味するものではありません。これを行う:valuedocument

vat testVar = $('input[name=radBut]:checked').val();

:radioセレクターは不要であり、選択が大幅に遅くなることに注意してください。

于 2013-06-24T17:15:10.817 に答える
0

他の人々が言っ​​たことに加えて、私はこれを少し良くしました。少なくともクリーナー。

最初に、コードをチェックtestVarして関数に入れました。

function testWithVar(testVar) {
    //store all the story divs in a variable
    var stories = $('[id^="story"]')
    //hide all the variables and show the variables according to testVar
    stories.hide().filter(':lt(' + testVar + ')').show();
    //append the value
    $('#VAL').html("value is = " + testVar);
}

ではready、次のように呼び出します。

$(document).ready(function () {
    testWithVar(1);
});

testVarまた、ラジオ グループで値を選択するたびに を変更したい場合は、次のように関数changeを呼び出すイベントを作成します。testWithVarready

$(document).ready(function () {
    testWithVar(1);
    $('input:radio[name=radBut]').change(function () {
        testWithVar(this.value);
    });
});

デモ: http://jsfiddle.net/CQDyz/

参考文献:

于 2013-06-24T17:27:58.647 に答える