Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   document.getElementById выборка ID по маске (https://javascript.ru/forum/events/28631-document-getelementbyid-vyborka-id-po-maske.html)

kvmutl 27.05.2012 15:28

document.getElementById выборка ID по маске
 
подскажите, как реализовать подсчет значений элемента input

<td><input class="digits6" type="text" id="count_price_disc[1]" value="100" readonly> руб.</td>
<td><input class="digits6" type="text" id="count_price_disc[8]" value="555" readonly> руб.</td>
<td><input class="digits6" type="text" id="count_price_disc[22]" value="600" readonly> руб.</td>

такой вариант не подходит
for(var i = 0; i < 1000; i++) {
total_price += Number(document.getElementById('count_price_disc['.i.']').value);
}

т.к. элементы идут не последовательно: count_price_disc[1], count_price_disc[2], count_price_disc[3] и т.д., а вразброс, поэтому последовательный прогон циклом не работает, к томуже кол-во элементов не предопределено (
нужно что-то вроде проссумировать по маске, взять все ID содержащие 'count_price_disc['
помогите решить проьлему!

devote 27.05.2012 15:39

<td><input class="digits6" type="text" id="count_price_disc[1]" value="100" readonly> руб.</td>
<td><input class="digits6" type="text" id="count_price_disc[8]" value="555" readonly> руб.</td>
<td><input class="digits6" type="text" id="count_price_disc[22]" value="600" readonly> руб.</td>
<script type="text/javascript">
    var total_price = 0,
        els = document.getElementsByTagName( 'input' );

    for( var el, i = 0; el = els[ i++ ]; ) {
        if ( /^count_price_disc/.test( el.id ) ) {
            total_price += Number( el.value );
        }
    }

    alert( total_price );
</script>

kvmutl 27.05.2012 15:58

2devote, просто огромнейшее спасибо!

observer 27.05.2012 21:19

Цитата:

Сообщение от kvmutl (Сообщение 176869)
подскажите, как реализовать подсчет значений элемента input
<td><input class="digits6" type="text" id="count_price_disc[1]" value="100" readonly> руб.</td>
<td><input class="digits6" type="text" id="count_price_disc[8]" value="555" readonly> руб.</td>
<td><input class="digits6" type="text" id="count_price_disc[22]" value="600" readonly> руб.</td>

Вы перепутали id с name. На сервер вам ничего не придет.

devote 27.05.2012 21:56

Цитата:

Сообщение от observer
Вы перепутали id с name. На сервер вам ничего не придет.

а может просто ему этого и не надо? вы об этом не подумали?

observer 27.05.2012 22:18

Цитата:

Сообщение от devote (Сообщение 176999)
а может просто ему этого и не надо? вы об этом не подумали?

Что написано, то и вижу:
count_price_disc[8]


Т. к. таким образом PHP принимает массив в запросе, то тут все очевидно. Но зачем он создает массив из 23 элементов (для 3-х в форме) для меня остается загадкой.


Часовой пояс GMT +3, время: 23:13.