Обработка нескольких элементов
Добрый вечер! Есть на странице один или несколько блоков с инпутами, куда вводятся данные для не сложного расчета.
Нюанс в том, что блок может быть один, а может быть два-три-десять. Ниже-указанный скрипт приведен для варианта один блок или 2 блока. Вопрос: Как бы оптимизировать этот банальный код после "} else {" для случая, если блоков больше одного? Ну чтобы не писать эти бесконечные room_shirina0, room_shirina1 и так далее? Код:
|
deltaman,
напишите цикл для блоков $('.room-block') тогда никаких id не понадобится |
Общая сумма блоков
deltaman,
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script>
$(function() {
var room = $(".room-block"),
info = $(".block_info");
room.on('input', 'input', function() {
var room_area = 0;
room.each(function() {
var inp = $('input', this);
var area = (+inp[0].value || 0) * (+inp[1].value || 0);
room_area += area;
});
info.html(room_area)
})
});
</script>
</head>
<body>
<div class="room-block" >
<span class="dattext">Высота, м </span>
<input type="text" name="roomh" class="dat" value=""> <br>
<span class="dattext">Ширина, м </span>
<input type="text" name="roomw" class="dat" value=""> <br>
</div>
<div class="room-block" >
<span class="dattext">Высота, м </span>
<input type="text" name="roomh" class="dat" value=""> <br>
<span class="dattext">Ширина, м </span>
<input type="text" name="roomw" class="dat" value=""> <br>
</div>
<div class="room-block" >
<span class="dattext">Высота, м </span>
<input type="text" name="roomh" class="dat" value=""> <br>
<span class="dattext">Ширина, м </span>
<input type="text" name="roomw" class="dat" value=""> <br>
</div>
<div class="room-block" >
<span class="dattext">Высота, м </span>
<input type="text" name="roomh" class="dat" value=""> <br>
<span class="dattext">Ширина, м </span>
<input type="text" name="roomw" class="dat" value=""> <br>
</div>
<div class='block_info'></div>
</body>
</html>
|
Спасибо, Щас попробую это прикрутить.
|
Не получается приладить, все равно в итоге мне нужен:
var room_area = 'сумме площадей по блокам'; для дальнейшей обработки в текущей функции (я просто привел только её часть отвечающую за определение площади по блокам) и вставка после "} else {" какой-либо функции или её содержимого приводит либо к NaN в итоге, либо к тому, что считает только первый блок. Нужно что-то в этом духе: (пишу полную ерунду, просто пытаюсь объяснить логику):
} else {
var room_shirina+n = $('#room+n INPUT[name=roomw]').val();
var room_visota+n = $('#room+n INPUT[name=roomh]').val();
var room_area = (var room_shirina+n + var room_visota+n);
}
|
Цитата:
|
у вас всё верно, просто приладить к себе в функцию не могу, мне нужно то, что я смогу вставить между своими:
} else { .......... } иначе не получается обработка у меня дальше. |
deltaman,
уберите ваши if ... else и замените на
var room = $(".room-block");
var room_area = 0;
room.each(function() {
var inp = $('input', this);
var area = (+inp[0].value || 0) * (+inp[1].value || 0);
room_area += area;
});
|
Работает!!! Спасибо огромное!!!
|
| Часовой пояс GMT +3, время: 05:13. |