Я установил раскрывающийся список на ноль. Можно ли изменить его на единицу после того, как будет установлен первый флажок? Другая проблема - это расчет. Итак, после установки флажка и изменения количества (скажем, я выбираю количество = 2, поэтому сумма к оплате будет 370), если я выберу что-то из дополнительных элементов, количество рабочего стола будет сброшено до базовой цены = 185 (количество = 1)
var amountDue = document.getElementById("amountDue");
var desktopAddOns = document.querySelectorAll(".products");
var selectOptions = document.getElementById("selectbasic");
var selectedValue;
var total = 0;
var price = 0;
//Removes the add on options from view
document.getElementById("desktops").onchange = function () {
if (document.getElementById("desktops").checked) {
price = 185;
} else if (document.getElementById("desktops").checked == false) {
price = 185;
removeAddOns(price);
}
addAddOns(price);
};
document.getElementById("wirelessCard").onchange = function () {
if (document.getElementById("wirelessCard").checked) {
price = 30;
} else if (document.getElementById("wirelessCard").checked == false) {
price = 30;
removeAddOns(price);
}
addAddOns(price);
};
//amountDue.innerHTML += total;
function addAddOns(price) {
total += price;
amountDue.innerHTML = total;
}
function removeAddOns(price) {
total -= price * 2;
amountDue.innerHTML = total;
}
selectOptions.addEventListener('change', () => {
selectedValue = selectOptions.options[ selectOptions.selectedIndex].value;
amountDue.innerHTML = Math.round(total * selectedValue);
})
<div class=" products">
<div class="form-group">
<label for="chkYes1">
<input type="checkbox" id="desktops" name="" value="desktops" />
desktop $185.00
</label>
</div>
<select id="selectbasic" name="" class="">
<option value="1">0</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
</div><br>
<label class=" font-weight-bold" for="checkboxes">Extra Items for Purchase
(Desktop)</label>
<div>
<div class="extraItemsDesktop">
<label for="checkboxes-0">
<input type="checkbox" name="wirelessCard" id="wirelessCard" value="wirelessCard">
Wireless Card - $30.00
</label>
</div>
<div class="form-group border border-dark rounded py-3 px-5">
<h3>Amount Due: <p id="amountDue">0</p>
</h3>
</div>
1 ответ
Попробуйте приведенный ниже модифицированный код:
var amountDue = document.getElementById("amountDue");
var desktopAddOns = document.querySelectorAll(".products");
var selectOptions = document.getElementById("selectbasic");
function calculateTotal() {
var oDesktopAddOn = document.getElementById("desktops");
var oWirelessCardAddOn = document.getElementById("wirelessCard");
var dTotal = 0;
if (oDesktopAddOn.checked) {
dTotal += 185;
var iNumberofItems = selectOptions.options[selectOptions.selectedIndex].value;
dTotal = Math.round(dTotal * iNumberofItems);
}
if (oWirelessCardAddOn.checked) {
dTotal += 30;
}
amountDue.innerHTML = dTotal;
}
document.getElementById("desktops").addEventListener("change", function() {
selectOptions.value = 1;
calculateTotal();
});
document.getElementById("wirelessCard").addEventListener("change", calculateTotal)
selectOptions.addEventListener('change', calculateTotal);
<div class=" products">
<div class="form-group">
<label for="chkYes1">
<input type="checkbox" id="desktops" name="" value="desktops" />
desktop $185.00
</label>
</div>
<select id="selectbasic" name="" class="">
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
</div><br>
<label class=" font-weight-bold" for="checkboxes">Extra Items for Purchase
(Desktop)</label>
<div>
<div class="extraItemsDesktop">
<label for="checkboxes-0">
<input type="checkbox" name="wirelessCard" id="wirelessCard" value="wirelessCard">
Wireless Card - $30.00
</label>
</div>
<div class="form-group border border-dark rounded py-3 px-5">
<h3>Amount Due:
<p id="amountDue">0</p>
</h3>
</div>
Похожие вопросы
Связанные вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript/JS) и его различных диалектах/реализациях (кроме ActionScript). Обратите внимание, что JavaScript — это НЕ Java. Включите все теги, относящиеся к вашему вопросу: например, [node.js], [jQuery], [JSON], [ReactJS], [angular], [ember.js], [vue.js], [typescript], [стройный] и т. д.