14.08.2012, 13:50
|
Интересующийся
|
|
Регистрация: 13.08.2012
Сообщений: 25
|
|
А как быть, если option с кавычками?
<select id="sel">
<option>красный "шелк"</option>
<option>синий "поезд"</option>
<option>белый</option>
</select>
как тут быть?
var prices = {
красный: 15,
синий: 25,
белый: 30
};
И еще, мне нужны только цифры, я взял только color, без value, и его дальше использую, правильно?
|
|
14.08.2012, 15:11
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
тут нужна хорошая регулярка, учитывающие все возможные случаи
<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 + '"').replace('_', ' "');
sel.appendChild(obj);
}
document.body.appendChild(sel);
var value = sel.options[0].text;
alert(value +': ' + colorPrices[value.replace(/\"/g, '').replace(' ', '_')]);
sel.onchange = function () {
value = sel.options[sel.selectedIndex].text;
alert(value +': ' + colorPrices[value.replace(/\"/g, '').replace(' ', '_')]);
}
}
</script>
PS: не образец
Последний раз редактировалось bes, 14.08.2012 в 15:32.
|
|
30.08.2012, 11:43
|
Интересующийся
|
|
Регистрация: 13.08.2012
Сообщений: 25
|
|
Сообщение от bes
|
тут нужна хорошая регулярка, учитывающие все возможные случаи
...
var colorPrices = {
красный_шёлк: 15,
синий_дух: 25,
белый_плен: 30
};
...
|
У меня первым пунктом, над "красный_шёлк" идет прочерк из нескольких тире "----------", как быть в этом случае? Если просто так и поставить, то не работает.
|
|
30.08.2012, 12:09
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
не совсем понял, что требуется
<script>
window.onload = function () {
var div = document.getElementById('div');
var colorPrices = {
красный_шёлк: 15,
синий_дух: 25,
белый_плен: 30
};
sel = document.createElement('select');
var str = '';
var obj = {};
obj = document.createElement('option');
obj.innerHTML = '--------------------';
sel.appendChild(obj);
for (var i in colorPrices) {
obj = document.createElement('option');
obj.innerHTML = (i + '"').replace('_', ' "');
sel.appendChild(obj);
}
document.body.appendChild(sel);
sel.onchange = function () {
if (this.selectedIndex != 0) {
value = sel.options[sel.selectedIndex].text;
alert(value +': ' + colorPrices[value.replace(/\"/g, '').replace(' ', '_')]);
}
}
}
</script>
|
|
30.08.2012, 19:15
|
Интересующийся
|
|
Регистрация: 13.08.2012
Сообщений: 25
|
|
Форма
<select id="param">
<option value="----">----</option>
<option value="красный шёлк">красный шёлк</option>
<option value="синий дух">синий дух</option>
<option value="белый плен">белый плен</option>
</select>
Соответственно в js пишем
...
var colorPrices = {
----: 0,
красный_шёлк: 15,
синий_дух: 25,
белый_плен: 30
};
...
Но с тире не срабатывает, как должно. Как быть с тире? Что писать в js над строкой
красный_шёлк: 15,
|
|
30.08.2012, 19:40
|
|
Профессор
|
|
Регистрация: 03.05.2011
Сообщений: 848
|
|
qazibum, в последнем скрипте, который написал вам bes, при выборе первого элемента списка (с индексом 0) ничего не будет происходить, о чем свидетельствует строка
if (this.selectedIndex != 0) {
кст дефисы в объекте ("----") нужно в кавычки ставить...
|
|
30.08.2012, 19:40
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
Можно его не добавлять в этот объект
<script>
window.onload = function () {
var div = document.getElementById('div');
var colorPrices = {
красный_шёлк: 15,
синий_дух: 25,
белый_плен: 30
};
sel = document.createElement('select');
var str = '';
var obj = {};
obj = document.createElement('option');
obj.innerHTML = '----';
sel.appendChild(obj);
for (var i in colorPrices) {
obj = document.createElement('option');
obj.innerHTML = (i + '"').replace('_', ' "');
sel.appendChild(obj);
}
document.body.appendChild(sel);
sel.onchange = function () {
if (this.selectedIndex == 0) {
value = '----';
alert(value + ': ' + 0)
} else {
value = sel.options[sel.selectedIndex].text;
alert(value +': ' + colorPrices[value.replace(/\"/g, '').replace(' ', '_')]);
}
}
}
</script>
или добавить
<script>
window.onload = function () {
var div = document.getElementById('div');
var colorPrices = {
first: 0,
красный_шёлк: 15,
синий_дух: 25,
белый_плен: 30
};
sel = document.createElement('select');
var str = '';
var obj = {};
for (var i in colorPrices) {
obj = document.createElement('option');
if (i == 'first') {
obj.innerHTML = '----'
} else {
obj.innerHTML = (i + '"').replace('_', ' "');
}
sel.appendChild(obj);
}
document.body.appendChild(sel);
sel.onchange = function () {
value = sel.options[sel.selectedIndex].text;
if (this.selectedIndex == 0) {
alert(value + ': ' + 0)
} else {
alert(value +': ' + colorPrices[value.replace(/\"/g, '').replace(' ', '_')]);
}
}
}
</script>
|
|
30.08.2012, 19:50
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
Сообщение от lord2kim
|
qazibum, в последнем скрипте, который написал вам bes, при выборе первого элемента списка (с индексом 0) ничего не будет
|
тогда ещё было неизвестно должно ли чего-то происходить или нет
Сообщение от lord2kim
|
кст дефисы в объекте ("----") нужно в кавычки ставить...
|
тогда придётся всё остальное дорабатывать, я уже писал
Сообщение от bes
|
PS: не образец
|
то есть подходит только для конкретных имён типа слово_слово, чтобы вывелось слово "слово"
|
|
|
|