А как быть, если option с кавычками?
<select id="sel"> <option>красный "шелк"</option> <option>синий "поезд"</option> <option>белый</option> </select> как тут быть? var prices = { красный: 15, синий: 25, белый: 30 }; И еще, мне нужны только цифры, я взял только color, без value, и его дальше использую, правильно? |
тут нужна хорошая регулярка, учитывающие все возможные случаи
<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: не образец |
Цитата:
|
не совсем понял, что требуется
<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> |
Форма
<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, |
qazibum, в последнем скрипте, который написал вам bes, при выборе первого элемента списка (с индексом 0) ничего не будет происходить, о чем свидетельствует строка
if (this.selectedIndex != 0) { кст дефисы в объекте ("----") нужно в кавычки ставить... |
Можно его не добавлять в этот объект
<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> |
Цитата:
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 01:30. |