用于表单输入的Javascript switch语句
Javascript switch statements for form input
尝试学习一些基本的JS原理来创建一个基于用户输入表单和JS switch语句返回价格的交付成本计算器。
(我知道这将更容易和更实用的服务器数据库,但我宁愿坚持使用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/
小提琴不工作,虽然我的测试版本显示消息,但返回价格(var成本)为未定义?
查看更正:https://jsfiddle.net/jetweedy/upvfgck2/2/
几个问题……
(1) if/else块没有正确格式化(您在'if'部分后面使用分号结束,然后单独放置'else',之后没有关闭它)。
(2)您有'邮政编码'作为div和输入的ID,所以'document.getElementById(…)'只是检索了第一个(div不是输入),无法找出它的'值'。
(3)特别是在jsfiddle中,如果你在左侧使用'onload'设置,那么你定义的函数将只在主体中被知道。Onload作用域,因此稍后当您在页面加载后单击该按钮时,它不会找到该函数。你可以通过两种方式来规避这一点……要么就不要在jsFiddle中使用"onLoad"选项,要么就把你的事件监听器添加到你的javascript按钮中,而不是在你的HTML代码中…类似…
document.getElementById('button').onclick = getDetails;
希望有帮助。我把它弄得可以工作了,但一旦我把它清理得足够干净,找出了问题所在,就不管它了。希望注释1-3是有意义的
相关文章:
- switch语句中的Javascript作用域
- switch语句中出错,Javascript
- 使用 switch 语句更改页面正文
- Javascript-尝试使用switch语句
- 如何将这个简单的switch语句重写得更简洁
- Js提示:“;期望一个赋值或函数调用,而看到一个表达式“;,Switch语句
- Switch语句比较用户输入的Javascript
- 使用 Javascript switch 语句,如何计算数组中元素的数量(仅数字)
- 为什么这个switch语句没有像预测的那样运行
- switch语句中的数字比较失败
- javascript switch语句/case表达式
- 为什么这个 JavaScript switch 语句(在 for 循环内)保留了上一次迭代的值
- jQuery窗口'hashchange'switch语句效率
- 如何在switch语句中使用NaN大小写
- 范围的Switch语句不起作用
- 带有输入文本的 JavaScript switch 语句
- 使用Javascript switch语句在DIV中显示HTML表
- Switch语句jQuery不适用于单选按钮值
- JavaScript switch 语句只执行默认的情况
- Angular JS扩展了if或switch语句