问题
In my index.html, I have a selection drop down menu:
<select id="car">
<option value="bmw">BMW</option>
<option value="toyota">TOYOTA</option>
</select>
My js:
var c = $('#car');
var selection;
c.change(function(){
if(c.val()==='bmw'){
selection = 'BMW';
}else if(c.val()==='toyota'){
selection = 'TOYOTA';
}
});
console.log(c.val());
console.log(selection);
When page firstly loaded, the initial selection is BMW, and I got console output "BMW" which is fine, then I select "TOYOTA", but the two console outputs are still "BMW".
How to get the current
value of the selection outside jQuery .change(...) function after the selection has been changed??
________________typo have been fixed____________
car.val() and Selection are both my typo here in the post, in my code I do use selection, and c.val().
My point is how to get the current selection value out side jQuery change() function. Please do not discuss on my typo any more. Thank you.
回答1:
You should define your var selection with lowercase, as this:
var selection;
Why? Javascript is case sensitive, so, Sensitive and sensitive are distinct variables.
Also, you should define your car var, like this:
var selection;
c.change(function(){
var car = $(this); //declare it
if(car.val()==='bmw'){
selection = 'BMW';
}else if(car.val()==='toyota'){
selection = 'TOYOTA';
}
});
回答2:
You're looking at car when you should be using c. car does not have a val() method.
if(c.val()==='bmw'){
selection = 'BMW';
} else if(c.val()==='toyota'){
selection = 'TOYOTA';
}
Also note that var Selection; will not be the same variable as selection (lowercase).
A better approach might be:
c.change(function(){
selection = c.find(":selected").text();
});
working example: http://jsfiddle.net/hunter/XespU/
来源:https://stackoverflow.com/questions/5898480/why-i-can-not-get-the-correct-value-of-my-select-field