简单的js计算器与无线电标签

时间:2017-04-05 04:19:43

标签: javascript html css

我找到像我这样的科目,但我无法解决我的问题。因此,我想通过将价格与使用if语句的票证数量相乘而不使用jquery来计算无线电标签的票证成本。我无法弄清楚为什么我没有输出。看起来我的功能都不起作用,我找不到原因。

请帮助我,我知道这很容易,但我还是初学者

<!doctype html>
<html>
<head>
	<title>No Boundaries</title>
	<link rel="stylesheet" href="styles1.css">
	<script type="text/javascript">
		function validate(){
			if(!document.form1.cond.checked)
				{alert("Please accept the Terms and Conditions");
				return false;
			}
			if(document.form1.name.value.length < 2)
				{alert(“Please enter your full name, not just an initial”);
				return false;
			}
			return true;
		}
		function cost() {
			if (document.form1.accom["v"].checked) {
				var amount = parseInt(document.form1.amount.value);
				var ans = 90 * amount;
				document.form1.total1.value = ans;
			} 
			else if (document.form1.accom["t"].checked) {
				var amount = parseInt(document.form1.amount.value);
				var ans = 150 * amount;
				document.form1.total1.value = ans;
			} 
			else if (document.form1.accom["c"].checked) {
				var amount = parseInt(document.form1.amount.value);
				var ans = 45 * amount;
				document.form1.total1.value = ans;
			}
		}
		function post(){
			if(document.form1.del["1"].checked){
				var num = 0;
				var ans = num;
				document.form1.total2.value = ans;
			}
			if(document.form1.del["2"].checked){
				var num = 12;
				var ans = num;
				document.form1.total2.value = ans;
			}
			if(document.form1.del["3"].checked){
				var num = 16;
				var ans = num;
				document.form1.total2.value = ans;
			}
			if(document.form1.del["4"].checked){
				var num = 20;
				var ans = num;
				document.form1.total2.value = ans;
			}
		}
		function damage(){
			var total1 = parseInt(document.form1.total1.value);
			var total1 = parseInt(document.form1.total1.value);
			var ans = total1 + total2;
			document.form.total3.value = ans;
		}
	</script>

</head>

<body>
<section>
  <form name="form1">
		<fieldset>
			<legend>Personal details</legend>
			<div>
				Please enter your full name<br>
				<input name="name" type="text" required onsubmit="return validate();"><br>
			</div>
			<div>
				Address<br>
				<input name="addresss" type="text" required><br>
				<input type="text"><br>
				<input type="text"><br>
				<input type="text"><br>
			</div>
			<div>
				Phone Number<br>
				<input name="phone" type="tel"><br>
			</div>
			<div>
				Email Address<br>
				<input name="email" type="email" required><br>
			</div>
			<div>
				Date of Birth<br>
				<input name="birth" type="date"><br>
			</div>
		</fieldset>
		<fieldset>
			<legend>Ticket Details</legend>
				<div>
					Type of T<br>
					<label for="vil">V</label>
					<input type="radio" name="accom[]" value="v">
					<label for="town">T</label>
					<input type="radio" name="accom[]" value="t">
					<label for="con">C</label>
					<input type="radio" name="accom[]" value="c">
				</div>
				<div>
					Quantity of T
					<input name="amount" type="number" min="1" max="10" required><br>
					<br>
					<input type="button" name="cost" value="C C" onclick="cost();"><br>
				</div>
				<div>
					Delivery Options<br>
					<input type="radio" name="del[]" value="1" >Free<br>
					<input type="radio" name="del[]" value="2" >£12<br>
					<input type="radio" name="del[]" value="3" >£16<br>
					<input type="radio" name="del[]" value="4" >£20<br>
					<br>
					<input type="button" value="C D" onclick="post();"><br>
				</div>
		</fieldset>
		<fieldset>
			<legend>Terms And Conditions</legend>
			<input name="cond" type="checkbox" onsubmit="return validate();">
		</fieldset>
		<fieldset>
			<legend>Cost</legend>
			<input type="text" name="total1" readonly><br>
			<input type="text" name="total2" readonly><br>
			<input type="text" name="total3" readonly><br>
			<br>
			<input type="button" value="C F C" onclick="damage();"><br>
		</fieldset>
		<br><br>
		<fieldset>
			<input type="submit">
		</fieldset>
  </form>
</section>
</body>

</html>

2 个答案:

答案 0 :(得分:1)

成本函数应该是这样的,

function cost() {
    if (document.form1.accom.value.toLowerCase() == "v") {
        var amount = parseInt(document.form1.amount.value);
        var ans = 90 * amount;
        document.form1.total1.value = ans;
    } else if (document.form1.accom.value.toLowerCase() == "t") {
        var amount = parseInt(document.form1.amount.value);
        var ans = 150 * amount;
        document.form1.total1.value = ans;
    } else if (document.form1.accom.value.toLowerCase() == "c") {
        var amount = parseInt(document.form1.amount.value);
        var ans = 45 * amount;
        document.form1.total1.value = ans;
    }
}

为了使代码更加重构,请按照这样做,

function cost() {
    var val = document.form1.accom.value.toLowerCase();
    var amount = parseInt(document.form1.amount.value);
    var ans;
    if (val == "v") {
        ans = 90 * amount;
    } else if (val == "t") {
        ans = 150 * amount;
    } else if (val == "c") {
        ans = 45 * amount;
    }
    document.form1.total1.value = ans;
}

答案 1 :(得分:0)

好的,我发现了你的错误。这是html的代码

<div>
   Type of T<br>
   <label for="vil">V</label>
   <input type="radio" name="accom" value="v">
   <label for="town">T</label>
   <input type="radio" name="accom" value="t">
    <label for="con">C</label>
</div>
<div>
   Quantity of T
   <input name="amount" type="number" min="1" max="10" required><br>
   <br>
   <input type="button" name="cost" value="C C" onclick="costs();"><br>
 </div>

接下来,在您的javascript中,您可以更改功能名称;而不是成本,你必须重新命名成本

 function costs() {
    if (document.form1.accom.value == 'v') {
        var amount = parseInt(document.form1.amount.value);
        var ans = 90 * amount;
        document.form1.total1.value = ans;
    } 
    else if (document.form1.accom.value == 't') {
        var amount = parseInt(document.form1.amount.value);
        var ans = 150 * amount;
        document.form1.total1.value = ans;
    } 
    else if (document.form1.a`enter code here`ccom.value == 'c') {
        var amount = parseInt(document.form1.amount.value);
        var ans = 45 * amount;
        document.form1.total1.value = ans;
    }
}

全部