1

ドロップダウンメニューのどのオプションが選択されているかに応じて、変数の値(例では「tot」と呼びます)を更新する必要があります。オプション1または2を選択した場合、totを10増やす必要があります。オプション3を選択した場合、変数「tot」を増やすことはできません。オプション1を選択してから、気が変わってオプション3を選択した場合、Totの値を復元する必要があります。

これがselectのhtmlです

<select name='hello' id='hello'>
   <option>Select an option...</option>
   <option id='one'>One</option>
   <option id='two'>Two</option>
   <option id='three'>Three</option>
</select>

そして、これが私が書いたjqueryスクリプトです。.change関数が期待どおりに機能しないため、機能が理解できなかったと思います。

var extra = 0;
var tot = 0;

$(document).ready(function () {
   $('#hello').change(function(){
   if($('#one').is(':selected')) {
     extra = 10;
   }
   else if($('#two').is(':selected')) {
     extra = 10;
   }
   else if($('#three').is(':selected')) {
     extra = 0;
   }
     tot = tot + extra;
   });
});
4

2 に答える 2

0
var extra = 0;
var tot = 0;
var initialTot = tot;

$(document).ready(function () {

   var previous = 0;
   var selected = 0;
   $('#hello').change(function(){
   if($('#one').is(':selected')) {
     previous = selected;
     selected = 1;
     extra = 10;
   }
   else if($('#two').is(':selected')) {
     previous = selected;
     selected = 2;
     extra = 10;
   }
   else if($('#three').is(':selected')) {
     previous = selected;
     selected = 3;
     extra = 0;
   }
     tot = tot + extra;
     if(previous === 1 && selected === 3) {
         tot = initialTot;
     }
   });
});
于 2013-01-20T23:11:37.047 に答える
0

または(あなたが何を求めているかを正しく理解していれば)....

var tot = 120;  //some number picked at random
var helloed = false; // flag for whether incremented 

$(document).ready(function(){
    $("#hello").change(function(){
        var sel = $(this).find(":selected").attr("id")
        if (sel == "one" || sel =="two" ) {
            if (!helloed) {
                tot += 10;
                helloed = true;
            }
        } else { // 'three' selected
            if (helloed) {
                tot -= 10;
                helloed = false;
            }
        }
    alert ("Tot is now " + tot);    
    });
});

さらにオプションがあれば、IF ではなくスイッチを使用しますが、この例ではそれで十分です

于 2013-01-21T04:07:27.703 に答える