13.08.2012, 20:07
|
Интересующийся
|
|
Регистрация: 13.08.2012
Сообщений: 25
|
|
Присвоить value значение или как?
Привет.
Есть select, у него несколько пунктов, каждый пункт должен соответствовать своей цифре (цене), эта цифра потом должна быть присвоена переменной ccolor. Пример
<select>
<option value="красный">красный</option>
<option value="синий">синий</option>
<option value="белый">белый</option>
</select>
Каждый цвет имеет свою цену
красный - 15
синий - 25
белый - 30
Если пользователь выбрал синий, значит переменная color должна иметь значение 25.
Какие есть варианты?
Я придумал через value, присваивать value цифру, но что-то у меня не получается. Как это сделать? Плюс этого варианта, что цены будут иногда меняться и менять будет не сложно, значит присваивать надо не цифру, а переменную, которая будет иметь значение цены. value изначально заполнены, как в примере.
|
|
13.08.2012, 20:21
|
Профессор
|
|
Регистрация: 31.05.2012
Сообщений: 396
|
|
Можно записать цену в значение атрибута value:
<select onchange="color=+this.value;">
<option value="15">красный</option>
<option value="25">синий</o00ption>
<option value="30">белый</option>
</select>
Вы пишете, что это у вас не получается?
Есть ещё 2 варианта.
Записать в атрибут value индекс в массиве цен:
<select onchange="color=prices[this.value];">
<option value="0">красный</option>
<option value="1">синий</option>
<option value="2">белый</option>
</select>
var prices=[15, 25, 30];
Третий вариант: создать объект с парами цвет - цена:
<select onchange="color=prices[this.value];">
<option>красный</option>
<option>синий</option>
<option>белый</option>
</select>
var prices={
красный: 15,
синий: 25,
белый: 30
};
Последний раз редактировалось oneguy, 13.08.2012 в 20:54.
|
|
14.08.2012, 01:05
|
Интересующийся
|
|
Регистрация: 13.08.2012
Сообщений: 25
|
|
Сообщение от oneguy
|
Можно записать цену в значение атрибута value:
<select onchange="color=+this.value;">
<option value="15">красный</option>
<option value="25">синий</o00ption>
<option value="30">белый</option>
</select>
Вы пишете, что это у вас не получается?
|
Спасибо за ответ.
Можно подробнее первый способ?
|
|
14.08.2012, 09:16
|
|
Профессор
|
|
Регистрация: 03.05.2011
Сообщений: 848
|
|
qazibum,
<html>
<head>
<title></title>
<script>
var color = "";
</script>
</head>
<body>
<select onchange="color=+this.value; alert(color + ' ' + typeof color);">
<option value="15">красный</option>
<option value="25">синий</o00ption>
<option value="30">белый</option>
</select>
</body>
</html>
|
|
14.08.2012, 09:27
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
рекомендую третий вариант, так как легко и понятно можно изменять цены, можно даже оттуда же содержимое option задавать
<select id="sel">
<option>красный</option>
<option>синий</option>
<option>белый</option>
</select>
<script>
window.onload = function () {
var sel = document.getElementById('sel');
var prices = {
красный: 15,
синий: 25,
белый: 30
};
var color = prices[sel.value];
alert( sel.value +': ' + color);
sel.onchange = function () {
color = prices[this.value];
alert( this.value +': ' + color);
}
}
</script>
<script>
window.onload = function () {
var colorPrices = {
красный: 15,
синий: 25,
белый: 30
};
sel = document.createElement('select');
var str = '';
for (var i in colorPrices) {
str += '<option>' + i + '</option>';
}
sel.innerHTML = str;
document.body.appendChild(sel);
alert(sel.value +': ' + colorPrices[sel.value]);
sel.onchange = function () {
alert(sel.value +': ' + colorPrices[sel.value]);
}
}
</script>
Последний раз редактировалось bes, 14.08.2012 в 09:55.
|
|
14.08.2012, 09:59
|
|
Профессор
|
|
Регистрация: 03.05.2011
Сообщений: 848
|
|
bes, в IE не буит робить...
|
|
14.08.2012, 10:22
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
Сообщение от lord2kim
|
bes, в IE не буит робить...
|
ну вывод селекта я подправил, а вот undefined почему в IE выводит этo я чё-то пропустил почему не работает
<script>
window.onload = function () {
var div = document.getElementById('div');
var colorPrices = {
красный: 15,
синий: 25,
белый: 30
};
sel = document.createElement('select');
var str = '';
var obj = {};
for (var i in colorPrices) {
obj = document.createElement('option');
obj.innerHTML = i;
sel.appendChild(obj);
}
document.body.appendChild(sel);
var value = sel.options[0].text;
alert(value +': ' + colorPrices[value]);
sel.onchange = function () {
value = sel.options[sel.selectedIndex].text;
alert(value +': ' + colorPrices[value]);
}
}
</script>
Последний раз редактировалось bes, 14.08.2012 в 10:48.
|
|
14.08.2012, 10:28
|
|
Профессор
|
|
Регистрация: 03.05.2011
Сообщений: 848
|
|
bes, это не из-за вывода select-a
IE нужное явное указание value, в отличии от др браузеров которые возвращают text в отсутствии value
|
|
14.08.2012, 10:46
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
Сообщение от lord2kim
|
bes, это не из-за вывода select-a
IE нужное явное указание value, в отличии от др браузеров которые возвращают text в отсутствии value
|
в IE select, также как и table, не позволяет менять своё innerHTML (точнее позволяет, но не воспринимает)
PS: понял, подправил
Последний раз редактировалось bes, 14.08.2012 в 10:51.
|
|
14.08.2012, 13:29
|
Интересующийся
|
|
Регистрация: 13.08.2012
Сообщений: 25
|
|
Под первым вариантом я подразумевал нечто подобное
var cena0 = 0;
var cena1 = 10;
var cena2 = 20;
pole.options[0].value = cena0;
pole.options[1].value = cena1;
pole.options[2].value = cena2;
Т.е. менять значение value. Но это, как мне кажется не очень правильно.
bes, спасибо за код, вроде получается. Позже выложу, что сделал, наверняка будет куча неправильностей.
|
|
|
|