Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Выдернуть текст из <option> и обсчитать
 
 автор: DJ Paltus   (16.07.2010 в 12:34)   письмо автору
 
 

Помогите, плиз, я совсем запутался!
Задача такая: есть два поля select, и надо на их основании посчитать цену позиции.
В первом поле выбирается ширина изображения, в value находится автоматически вычисленная php-скриптом высота. Она выводится в span с id="ddX", где X - порядковый номер позиции.
Во втором поле select происходит выбор носителя, при этом value является ценой.
При изменении состояния любого поля select требуется, чтобы в span с id="ppX" записывалось значение, равное ширине помноженной на длину и на цену, а в span id=result - сумма стоимости всех позиций, то есть, содержимое span id=[pp0..ppN], где N - количество позиций.
Для наглядности, ссылка: http://mumm-36.narod.ru/test.html

<table id=order border=1>
<tr>
    <td>Ш:
        <select size=1 name='hsize' onchange='k = this.value; document.getElementById("dd0").innerHTML = k;'>
            <option value=99>120</option>
            <option value=149>180</option>
        </select> В:
        <span id='dd0'>99</span>&nbsp;мм
    </td>
    <td>
        <select size='1' name=mat onchange='var p = this.value; document.getElementById("pp0").innerHTML = p*k;'>
            <option value='200'>Фотобумага</option>
            <option value='500'>Холст</option>
        </select>
    </td>
    <td>
        <span id=pp0>109.5</span> руб.
    </td>
    </tr>
    <tr>
        <td >Ш:
            <select size=1 name='hsize'  onchange='k = this.value; document.getElementById("dd1").innerHTML = k;'>
                <option value=62>120</option>
                <option value=92>180</option>
            </select> В:
            <span id='dd1'>62</span>&nbsp;мм
        </td>
        <td>
            <select size='1' name=mat onchange='var p = this.value; document.getElementById("pp1").innerHTML = p*k;'>
                <option value='200'>Фотобумага</option>
                <option value='500'>Холст</option>
            </select>
        </td>
        <td>
            <span id=pp1>91</span> руб.
        </td>
    </tr>
</table>

Завис я, в общем...

  Ответить  
 
 автор: bishake   (16.07.2010 в 12:50)   письмо автору
 
   для: DJ Paltus   (16.07.2010 в 12:34)
 

Чтобы не допускать ошибок и повторений кода, создайте функцию, которая будет вызываться при изменении любого селекта.
Я подробно не вникал в Ваши расчёты, поэтому приведу пример, от которого Вы можете отталкиваться:
function count() {
   var width = document.getElementById('select1').value;
   var heigth = document.getElementById('select2').value;
   var square = width * heigth ;
}

...
<select id='select1' onchange='count();' ... >
<select id='select2' onchange='count();' ... >
<select id='select3' onchange='count();' ... >

  Ответить  
 
 автор: DJ Paltus   (16.07.2010 в 13:29)   письмо автору
 
   для: bishake   (16.07.2010 в 12:50)
 

Хм. Да, понемногу начало получаться, спасибо. НО!
Остается невыясненным такая деталь - как из этой конструкции:
<select size=1 id='hsize0' >
        <option value=99>120</option>
        <option value=149>180</option>
</select>

вытащить и передать в переменную текст (цифру 120 или 180 в данном случае) выделенного элемента?

  Ответить  
 
 автор: bishake   (16.07.2010 в 13:49)   письмо автору
 
   для: DJ Paltus   (16.07.2010 в 13:29)
 

В принципе на JQuery проще всего:
$('#hsize0 option:selected').text();

  Ответить  
 
 автор: sms-send   (16.07.2010 в 13:54)   письмо автору
 
   для: bishake   (16.07.2010 в 13:49)
 

На jQuery ещё проще так:
$('#hsize0').val(); 
(если нужно именно значение атрибута value получить, а не подпись)

  Ответить  
 
 автор: bishake   (16.07.2010 в 14:02)   письмо автору
 
   для: sms-send   (16.07.2010 в 13:54)
 

Что за мания - лишь бы ляпнуть? Прочитайте ещё раз пост, на который Вы ответили после меня

  Ответить  
 
 автор: sms-send   (16.07.2010 в 14:04)   письмо автору
 
   для: bishake   (16.07.2010 в 14:02)
 

Извините, пожалуйста, ошибся.

  Ответить  
 
 автор: АЯ   (16.07.2010 в 13:55)   письмо автору
 
   для: DJ Paltus   (16.07.2010 в 13:29)
 

onchange="with (this) {alert (options [selectedIndex].value); alert (options [selectedIndex].text)}"
И то, и другое (и value, и text) - по умолчанию строки.
Поэтому перед сложением значений надо перевести их в числа (лучше, ибо это работает быстрее всего остального, помножить их на единичку).
Ну а если будете умножать, делить или вычитать, то можно ничего предварительно не делать.

  Ответить  
 
 автор: DJ Paltus   (16.07.2010 в 14:27)   письмо автору
 
   для: АЯ   (16.07.2010 в 13:55)
 

Получилось вот так:
<script>
    function count(idx) {
        var ob = document.getElementById('hsize'+idx);
        var width = ob.value;
        document.getElementById('dd'+idx).innerHTML = width;
        with(ob) var w = options[selectedIndex].text;
        var prc = document.getElementById('mat'+idx).value;
        document.getElementById('pp'+idx).innerHTML = prc*w*width/10000;
        }
</script>

Всё верно сделал?
(рабочая версия вот: http://mumm-36.narod.ru/test.html)

  Ответить  
 
 автор: bishake   (16.07.2010 в 15:07)   письмо автору
 
   для: DJ Paltus   (16.07.2010 в 14:27)
 

На этот вопрос лучше всего Вам ответит IE6 и остальные браузеры ;-)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования