#javascript #jquery
#javascript #jquery
Вопрос:
Допустим, у меня есть этот HTML:
<select id='list'>
<option value='1'>First</option>
<option value='2'>Second</option>
<option value='3'>Third </option>
</select>
<input type ="text" id="text"/>
и затем этот JavaScript
//other variables are also declared here
var x1 = 5;
var x2 = 10;
var value = x1 * x2;
var list_value =$("#list").change(function() {
$(this).val();
// just an example of how i want the function in the variable
});
var nwval = value * list_value;
$('#text').val(nwval);
// some long piece of code
// i'm also using the list_value value somewhere in the long piece of code..
Я хочу, чтобы значение значения в текстовом поле менялось по мере выбора пользователем параметра, я знаю, что это сработает, если я оберну вокруг него событие изменения, но есть ли какой-нибудь способ сделать это, сохранив его в качестве этой переменной list_value
?
Комментарии:
1. jsfiddle.net/karim79/BXu26/1
2. Я понимаю, но именно по этой причине я прошу о помощи 🙂
3. @epascarello просто потому, что вы знаете, это не значит, что он может, поэтому вместо того, чтобы критиковать его недостаток знаний, попробуйте вместо этого обогатить его…
4. $(селектор).change() вернет вам $(селектор) обратно. итак, list_value — это фактически выбранный вами элемент. Сначала вам нужно изменить эту часть.
5. Спасибо всем, кто ответил, они здесь действительно потрясающие люди. В настоящее время я пробую их, и я вернусь к вам, ребята.. Еще раз спасибо.
Ответ №1:
var x1 = 5;
var x2 = 10;
var value = x1 * x2;
var nwval;
$("#list").change(function() {
nwval = value * $(this).val();
$('#text').val(nwval);
});
Ответ №2:
$('#text').val($('option:selected').text());
$('#list').change(function(){
$('#text').val($('option:selected').text());
})
проверьте здесь http://jsfiddle.net/QrHUN /
Ответ №3:
Перенос события изменения — лучший способ, поскольку он создает замыкание, вы могли бы использовать глобальные переменные, как показано ниже, но вам было бы лучше (имхо) просто снова захватить значение.
Технически вы могли бы это сделать (хотя это плохая идея, поскольку это глобальные переменные):
var x1 = 5;
var x2 = 10;
var value = x1 * x2;
var list_value = 1;
$("#list").change(function() {
list_value = $(this).val();
var nwval = value * list_value;
$('#text').val(nwval);
});
Ответ №4:
это возвращает объект jQuery, а не значение.
var list_value =$("#list").change(function() {
Если вам нужно значение вне кода, вам нужно будет сделать что-то вроде этого
var list_value = 0;
var sel = $("#list").change(function() {
list_value = $(this).val();
}).change();
var nwval = value * list_value;
$('#text').val(nwval);
НО событие onchange никогда не обновит страницу, только эту переменную!