내 작업 코드는 첫 번째 입력 값이 라디오 버튼과 확인란에서 오는 경우에만 제대로 작동합니다. 그러나 그 반대의 경우 라디오 버튼 값이 확인란의 값을 계속 재설정하고 해결 방법을 모르겠습니다.
내 HTML 코드는 다음과 같습니다.
<font face = "Algerian" ><h2>What Kind of Burger Would You Like to Order?</h2></font> <form name ="burgz"> Add-ons <br/>     <input type="checkbox" name="AO1" value="45" onclick="calculate1();">Bacon - 45     <input type="checkbox" name="AO2" value="40" onclick="calculate2();">Sausage - 40     <input type="checkbox" name="AO3" value="30" onclick="calculate3();">Ham - 30     <input type="checkbox" name="AO4" value="10" onclick="calculate4();">Tomatoes - 10     <input type="checkbox" name="AO5" value="3" onclick="calculate5();">Peppers - 3     <input type="checkbox" name="AO6" value="5" onclick="calculate6();">Olives - 5     <input type="checkbox" name="AO7" value="15" onclick="calculate7();">Extra Cheese - 15 <br/> Size<br/>     <input type="radio" name="size" value="10" onclick="calculateRadio();">Small - 10     <input type="radio" name="size" value="20" onclick="calculateRadio();">Medium - 20     <input type="radio" name="size" value="30" onclick="calculateRadio();">Large - 30 <input type="hidden" name="size"> <br/> Shape<br/>     <input type="radio" name="shape" value="15" onclick="calculateRadio();">Round - 15     <input type="radio" name="shape" value="10" onclick="calculateRadio();">Square - 10 <input type="hidden" name="shape"> <br/> <p>Total Price: <input type="text" name="total_price" value="0" readonly="readonly"></p> </form>
내 Javascript 코드는 다음과 같습니다.
<script type = "text/javascript">
///////////auto-total checkbox
function calculate1() {
var p1= eval(burgz.total_price.value)
if(document.burgz.AO1.checked==true){
p1 += eval(45);
}
else{
p1 -=eval(45);
}
burgz.total_price.value = eval(p1)
}
function calculate2() {
var p1= eval(burgz.total_price.value)
if(document.burgz.AO2.checked==true){
p1 += eval(40);
}
else{
p1 -=eval(40);
}
burgz.total_price.value = eval(p1)
}
function calculate3() {
var p1= eval(burgz.total_price.value)
if(document.burgz.AO3.checked==true){
p1 += eval(30);
}
else{
p1 -=eval(30);
}
burgz.total_price.value = eval(p1)
}
function calculate4() {
var p1= eval(burgz.total_price.value)
if(document.burgz.AO4.checked==true){
p1 += eval(10);
}
else{
p1 -=eval(10);
}
burgz.total_price.value = eval(p1)
}
function calculate5() {
var p1= eval(burgz.total_price.value)
if(document.burgz.AO5.checked==true){
p1 += eval(3);
}
else{
p1 -=eval(3);
}
burgz.total_price.value = eval(p1)
}
function calculate6() {
var p1= eval(burgz.total_price.value)
if(document.burgz.AO6.checked==true){
p1 += eval(5);
}
else{
p1 -=eval(5);
}
burgz.total_price.value = eval(p1)
}
function calculate7() {
var p1= eval(burgz.total_price.value)
if(document.burgz.AO7.checked==true){
p1 += eval(15);
}
else{
p1 -=eval(15);
}
burgz.total_price.value = eval(p1)
}
/////////radioButton computation
function calculateRadio() {
var s1, sh1;
s1 = burgz.size.value * 1;
sh1 = burgz.shape.value * 1;
total = s1 + sh1;
burgz.total_price.value = total;
}
</script>
onchange
이벤트에 의해 트리거 된 동일한 함수를 단순히 재사용하는 것이 좋습니다 .
<font face = "Algerian" ><h2>What Kind of Burger Would You Like to Order?</h2></font>
<form name ="burgz">
Add-ons <br/>
    <input type="checkbox" name="AO1" value="45" onchange="calculate(this);">Bacon - 45
    <input type="checkbox" name="AO2" value="40" onchange="calculate(this);">Sausage - 40
    <input type="checkbox" name="AO3" value="30" onchange="calculate(this);">Ham - 30
    <input type="checkbox" name="AO4" value="10" onchange="calculate(this);">Tomatoes - 10
    <input type="checkbox" name="AO5" value="3" onchange="calculate(this);">Peppers - 3
    <input type="checkbox" name="AO6" value="5" onchange="calculate(this);">Olives - 5
    <input type="checkbox" name="AO7" value="15" onchange="calculate(this);">Extra Cheese - 15
<br/>
Size<br/>
    <input type="radio" name="size" value="10" onchange="calculate(this);">Small - 10
    <input type="radio" name="size" value="20" onchange="calculate(this);">Medium - 20
    <input type="radio" name="size" value="30" onchange="calculate(this);">Large - 30
<input type="hidden" name="size">
<br/>
Shape<br/>
    <input type="radio" name="shape" value="15" onchange="calculate(this);">Round - 15
    <input type="radio" name="shape" value="10" onchange="calculate(this);">Square - 10
<input type="hidden" name="shape">
<br/>
<p>Total Price: <input type="text" name="total_price" value="0" readonly="readonly"></p>
</form>
<script type="text/javascript">
var lastSizeVal = 0;
var lastShapeVal = 0;
function calculate(input) {
var total = parseInt(burgz.total_price.value);
var value = parseInt(input.value);
if (input.type === 'radio') {
if (input.name === 'size') {
total -= lastSizeVal;
lastSizeVal = value;
}
else {
total -= lastShapeVal;
lastShapeVal = value;
}
}
if (input.checked)
burgz.total_price.value = total + value
else
burgz.total_price.value = total - value;
}
</script>
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다