Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Скрипт подсчёта чек боксов по имени а не по id (https://javascript.ru/forum/misc/14824-skript-podschjota-chek-boksov-po-imeni-ne-po-id.html)

klubnichkaaa 02.02.2011 15:02

Скрипт подсчёта чек боксов по имени а не по id
 
Вот скрипт который считает чекбоксы

<script type="text/javascript">
function price(form){
var total = 0;
for (var i = 1; i< form.elements.length; i++){
if (document.getElementById(i).checked) {
var b=parseFloat(document.getElementById(i).value);
}
else {
b=0;
}
total+=b;
}
document.getElementById("total_price").innerHTML=total;
document.getElementById("total_prie").value=total;
document.getElementById("total_pr").value=total;
}
</script>


Имя поля у меня xz_
как мне сделать что бы он обращался по имени!? а имя я уже потом поставлю на увеличение.

ksa 02.02.2011 15:16

Цитата:

Сообщение от klubnichkaaa
как мне сделать что бы он обращался по имени!?

Оно?

document.getElementsByName('нужное_имя')

softovik88 02.02.2011 16:13

та можешь им оставить и id и name - переписывать не придется.

klubnichkaaa 02.02.2011 16:19

Слушай прогресс есть хотя бы потому что хоть нолик стал появляться, но он не считает подскажи может я не правильно переписал скрипт!?
вот поля которые он считает
<?php $menuMail='<input type="checkbox" name="xz_'.$raz_na->id.'" id="'.$b.'" value="'.$raz_na->cena.'">'; $b++; echo $menuMail;?>

xz_ оно не меняется оно всегда такое! я так понял что в for нужны другие условия какие подскажи пожалуйста!

<script type="text/javascript">
function price(form){
var total = 0;
for (var i = 1; i< form.elements.length; i++){
if (document.getElementsByName('xz_').checked) {
var b=parseFloat(document.getElementsByName('xz_').value);
}
else {
b=0;
}
total+=b;
}
document.getElementById("total_price").innerHTML=total;
document.getElementById("total_prie").value=total;
document.getElementById("total_pr").value=total;
}
</script>

klubnichkaaa 02.02.2011 16:20

не могу я id поставить! скрипт полностью рабочий дело в том что если добавить ещё поля любые то скрипт перестаёт работать!

softovik88 02.02.2011 16:37

document.getElementsByName('xz_').checked

так а ты же имя поля не подставляешь - циферку - ту, что в цикле

ksa 02.02.2011 16:38

Цитата:

Сообщение от klubnichkaaa
может я не правильно переписал скрипт

Дело в том, что

document.getElementsByName('нужное_имя')


возвращает целую коллекцию элементов с таким именем. Т.о. нельзя кним обращаться

document.getElementsByName('xz_').checked

или
document.getElementsByName('xz_').value


Нужно писать

document.getElementsByName('xz_')[<порядковый_номер_элемента>].checked

или
document.getElementsByName('xz_')[<порядковый_номер_элемента>].value

klubnichkaaa 03.02.2011 08:54

Я понял щас проверю! Могу я так сделать?

<script type="text/javascript"> 
function price(form){ 
for (var i = 1; i< form.elements.length; i++){ 
if (document.getElementsByName('xz_')[i].checked) { 
var b=parseFloat(document.getElementsByName('xz_')[i].value); 
} 
else { 
b=0; 
} 
total+=b; 
} 
document.getElementById("total_price").innerHTML=total; 
document.getElementById("total_prie").value=total; 
document.getElementById("total_pr").value=total; 
} 
</script>


или же мне нужно id из базы сюда подставить!?
name="xz_'.$raz_na->id.'"

если эту то как я её в java script поставлю!?

klubnichkaaa 03.02.2011 09:00

и вот ещё что хотел спросить что тогда конкретно в for прописать! в условие ()

ksa 03.02.2011 09:06

Цитата:

Сообщение от klubnichkaaa
Могу я так сделать?

Без примера хтмл разметки скрипт никак не оценить... Откуда мне знать чего там у тебя и как.
Делай полный тестовый пример - нанём и будем "тренироваться".


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