0

ここで私が何を意味するか理解できますhttp://jsfiddle.net/ganymedes/eWghm/1/ 1986選択してから Helloを選択し、最後にtest2を選択してください。つまり、test2 を選択すると、スクリプトは「0」のテキストを表示しますが、表示されません。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script></script>
    <script type="text/javascript">
    var zero="0,00";
    var one="0,01";
    $(document).ready(function() {    
        $('#main').on('change', '.select-box', function() {    
            if ($(".select-box option[value='1']").prop('selected') && $(".select-box option[value='1986']").prop('selected')) {    
                $('#street').html("<option value='2'>test</option><option value='3'>test2</option>");    
            }
            if ($(".select-box option[value='1']").prop('selected') && $(".select-box option[value='1986']").prop('selected') && $(".select-box option[value='3']").prop('selected')) {
                 document.getElementById("demo3").innerHTML=""+zero;
            }    
        });    
      });
</script>    
<script type="text/javascript">    
    var x="",i;
    for(i=1986;i<2013;i++)
    {
        x=x + "<option value='"+i+"'> " + i + "</option>";
    }
    $(document).ready(function() {
        document.getElementById("forloop").innerHTML="<select class='select-box'><option>Empty</option>"+x+"</select>";
    });
</script>  
</head>
<body>  
    <p id="forloop"></p>
        <div id="main">
          <select class="select-box">
             <option>Empty</option>
             <option value="1">Hello</option>    
         </select> 
         <p></p>
         <select class="select-box" id="street">
            <option>Empty<option>
         </select>
      </div>    
    <p id="demo3">    
  </body>
</html>
4

2 に答える 2

2

選択を変更するたびに、この同じハンドラーが呼び出されます。最初の条件が一致すると、2 番目の選択の内容がリセットされます。これはすべて、よりターゲットを絞って書き直す必要があります...しかし、本当にこのルートに行きたい場合は、ifステートメントの順序を入れ替えて、2番目をelseifにする必要があります。

于 2012-09-11T14:28:21.530 に答える
1

3 つの選択ボックスには同じクラスがあるため、最初の選択ボックスの値が 1 の場合、2 番目のテストは常に true になります。要素を区別するためにクラス名の代わりに id を使用すると、はるかにわかりやすく (#年、#月、#日)、はるかに保守しやすくなります...

于 2012-09-11T14:28:19.470 に答える