@Minningt

Как сократить код для селектов?

Привет всем. Подскажите, как сократить ужасный код на JS ибо есть 6-8 селектов и код будет огромным, с тонной переменных.

Делаю на сайте так, чтобы при выбранном значении в селекте появлялась стоимость товара, изображение его. Типа как тут www.compday.ru/configurator.html
Изначально скрыто всё. Всё работает, но как выше я сказал, у меня много селектов, а кода огромное кол-во просто....

Вот для 1 селекта.
JS code - jsfiddle.net/f2Lsxh73/1
<tr>
<td>Процессор</td>
<td>
<?php
echo "<div class='newselect'>";
echo "<select class='chosen' id='chosenmak' style='width:540px;' name='maker' onChange='getpricecpu()'>";
echo '<option value="0">-- Выбрать --</option>';
foreach ($arr_get as $value) {
$ID   = $value['ID'];
$Price  = $value['Price'];
$Model = $value['Model'];
$photo = $value['photo'];
echo '<option data-price="'.$Price.'" data-image="'.$photo.'" value="'.$Model.'">'
."$Price"."  грн. ----"." $Manufacture"." '</option>';
}
echo "</select>";
echo "</div>";
echo "<span id='model'><img src='$photo' id='preview'/></span>";
echo "<td><input type='number' min='1' id='kol_cpu' name='kol_cpu' onChange='sumprice()'></td>";
echo "<td><input class='label' id='price_cpu' name='price_cpu' readonly /></td>";
?>
</td>
</tr>

Во втором селекте и далее почти тоже самое, но массив foreach состоит из других данных немного
  • Вопрос задан
  • 191 просмотр
Пригласить эксперта
Ответы на вопрос 1
@serega_kaktus
Программист-самоучка, фрилансер
Переписать функцию вот так и передавать id селекта как параметр не пробовали?
function sumprice(id){
		var calculate = 0;
		var sum_main = document.getElementById("sum_main");
		var maker = document.getElementById(id);
		var pricem = maker.options[maker.selectedIndex].getAttribute("data-price");
		var cpu1 = document.getElementById("kol_cpu").value;
		calculate = cpu1*pricem;
		var result = document.getElementById("price_cpu");
    	result.value = calculate;
    	document.getElementById('sum_main').innerHTML = result.value;
	}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы