Javascript 用于表单输入的 switch 语句
Javascript switch statements for form input
尝试学习一些基本的 JS 原理,以创建基于用户输入表单和 JS switch 语句的交付成本计算器 return 价格。
(我知道使用服务器数据库会更容易、更实用,但我现在更愿意坚持使用 JS)
这是我的尝试;
HTML
<h2>DELIVERY CHARGE CALCULATOR</h2>
<div id="size">
<p id="step1">STEP 1</p>
<p>DIMENSIONS</p>
<p>WIDTH(cm):
<input type="text" name="width" id="width" size="5" maxlength="4" />
</p>
<p>LENGTH(cm):
<input type="text" name="length" id="length" size="5" maxlength="4" />
</p>
<p>HEIGHT(cm):
<input type="text" name="height" id="height" size="5" maxlength="4" />
</p>
</div>
<div id="postcode">
<p id="step2">STEP 2</p>
<p>Postcode area (eg. N1, N2 etc)</p>
<input type="text" id="postcode" name="postcode" size="5" maxlength="3" />
</div>
<input type="button" id="button" value="GET PRICE" onClick="getDetails()">
<div id="message">
<p><b>THANK YOU</b></p>
<P>THE COST FOR DELIVERY FROM STORE WILL BE:</P>
<p id="price_msg"></p>
</div>
CSS
#message {
visibility: hidden;
}
#message.show {
visibility: visible;
}
JS
var width;
var length;
var height;
var men;
var postcode;
var cost;
function smallVan(postcode) {
switch (postcode) {
case "N1":
cost = "45";
break;
case "N2":
cost = "50";
break;
}
showPrice(cost);
};
function transit(postcode) {
switch (postcode) {
case "N1":
cost = "80";
break;
case "N2":
cost = "100";
break;
}
showPrice(cost);
};
function getVehicle() {
if (width < 100 && length < 100 && height < 100) {
postcode = document.getElementById("postcode").value.toUpperCase();
smallVan(postcode);
};
else if (width > 100 || length > 100 || height > 100 {
postcode = document.getElementById("postcode").value.toUpperCase();
transit(postcode);
};
function getDetails() {
width = document.getElementById("width").value;
length = document.getElementById("length").value;
height = document.getElementById("height").value;
getVehicle(width, length, height);
};
function showPrice(cost) {
var msg_display = document.getElementById("message")
msg_display.className = "show";
var price = document.getElementById("price_msg");
price.textContent = "£" + cost;
};
这是 jsfiddle: https://jsfiddle.net/2kussrtc/1/
fiddle 根本不起作用,虽然我的测试版本显示消息但 return 价格(var 成本)未定义?
请参阅此处进行更正:https://jsfiddle.net/jetweedy/upvfgck2/2/
几个问题...
(1) if/else 块的格式不正确(您在 'if' 部分后用分号结束,然后单独放置 'else' 并且之后没有关闭它。
(2) 你有 'postcode' 作为 div 的 ID 以及输入,所以 'document.getElementById(...)' 只是检索了第一个(DIV 不是输入)并且无法弄清楚它的 'value'.
(3) 具体在jsfiddle中,如果你使用左侧的'onload'设置,那么你定义的函数只会在body.onload范围内被知道,所以以后当你页面加载后单击按钮,它将找不到功能。您可以通过两种方式规避这两种方式...要么不要在 jsFiddle 中使用 'onLoad' 选项,要么将您的事件侦听器添加到 javascript 中的按钮而不是 HTML 中代码...类似...
document.getElementById('button').onclick = getDetails;
希望对您有所帮助。我得到了它的工作-ish,但是一旦我清理它足以找出问题,就不要管它了。希望注释 1-3 有意义。
尝试学习一些基本的 JS 原理,以创建基于用户输入表单和 JS switch 语句的交付成本计算器 return 价格。
(我知道使用服务器数据库会更容易、更实用,但我现在更愿意坚持使用 JS)
这是我的尝试;
HTML
<h2>DELIVERY CHARGE CALCULATOR</h2>
<div id="size">
<p id="step1">STEP 1</p>
<p>DIMENSIONS</p>
<p>WIDTH(cm):
<input type="text" name="width" id="width" size="5" maxlength="4" />
</p>
<p>LENGTH(cm):
<input type="text" name="length" id="length" size="5" maxlength="4" />
</p>
<p>HEIGHT(cm):
<input type="text" name="height" id="height" size="5" maxlength="4" />
</p>
</div>
<div id="postcode">
<p id="step2">STEP 2</p>
<p>Postcode area (eg. N1, N2 etc)</p>
<input type="text" id="postcode" name="postcode" size="5" maxlength="3" />
</div>
<input type="button" id="button" value="GET PRICE" onClick="getDetails()">
<div id="message">
<p><b>THANK YOU</b></p>
<P>THE COST FOR DELIVERY FROM STORE WILL BE:</P>
<p id="price_msg"></p>
</div>
CSS
#message {
visibility: hidden;
}
#message.show {
visibility: visible;
}
JS
var width;
var length;
var height;
var men;
var postcode;
var cost;
function smallVan(postcode) {
switch (postcode) {
case "N1":
cost = "45";
break;
case "N2":
cost = "50";
break;
}
showPrice(cost);
};
function transit(postcode) {
switch (postcode) {
case "N1":
cost = "80";
break;
case "N2":
cost = "100";
break;
}
showPrice(cost);
};
function getVehicle() {
if (width < 100 && length < 100 && height < 100) {
postcode = document.getElementById("postcode").value.toUpperCase();
smallVan(postcode);
};
else if (width > 100 || length > 100 || height > 100 {
postcode = document.getElementById("postcode").value.toUpperCase();
transit(postcode);
};
function getDetails() {
width = document.getElementById("width").value;
length = document.getElementById("length").value;
height = document.getElementById("height").value;
getVehicle(width, length, height);
};
function showPrice(cost) {
var msg_display = document.getElementById("message")
msg_display.className = "show";
var price = document.getElementById("price_msg");
price.textContent = "£" + cost;
};
这是 jsfiddle: https://jsfiddle.net/2kussrtc/1/
fiddle 根本不起作用,虽然我的测试版本显示消息但 return 价格(var 成本)未定义?
请参阅此处进行更正:https://jsfiddle.net/jetweedy/upvfgck2/2/
几个问题...
(1) if/else 块的格式不正确(您在 'if' 部分后用分号结束,然后单独放置 'else' 并且之后没有关闭它。
(2) 你有 'postcode' 作为 div 的 ID 以及输入,所以 'document.getElementById(...)' 只是检索了第一个(DIV 不是输入)并且无法弄清楚它的 'value'.
(3) 具体在jsfiddle中,如果你使用左侧的'onload'设置,那么你定义的函数只会在body.onload范围内被知道,所以以后当你页面加载后单击按钮,它将找不到功能。您可以通过两种方式规避这两种方式...要么不要在 jsFiddle 中使用 'onLoad' 选项,要么将您的事件侦听器添加到 javascript 中的按钮而不是 HTML 中代码...类似...
document.getElementById('button').onclick = getDetails;
希望对您有所帮助。我得到了它的工作-ish,但是一旦我清理它足以找出问题,就不要管它了。希望注释 1-3 有意义。