如果else不在javascript中工作
If else is not working in javascript
我在Javascript中有一个简单的if-else语句,用于计算票价。我做了一个if-else语句,这样,如果"StartStation"的值大于"EndStation",它将从"StartStation"值减去"EndStation"值。如果没有,它将从"EndStation"值减去"StartStation"值。问题是,当我选择From:station 8和To:station 10时,我得到的是-2,而不是+2。你能帮我排序吗?
HTML
<form>
From:<select id="StartStation">
<option selected="selected">---Please select start station</option>
<option value="1">Station 1</option>
<option value="2">Station 2</option>
<option value="3">Station 3</option>
<option value="4">Station 4</option>
<option value="5">Station 5</option>
<option value="6">Station 6</option>
<option value="7">Station 7</option>
<option value="8">Station 8</option>
<option value="9">Station 9</option>
<option value="10">Station 10</option>
<option value="11">Station 11</option>
<option value="12">Station 12</option>
<option value="12">Station 13</option>
</select>
To:<select id="EndStation">
<option value="1">Station 1</option>
<option value="2">Station 2</option>
<option value="3">Station 3</option>
<option value="4">Station 4</option>
<option value="5">Station 5</option>
<option value="6">Station 6</option>
<option value="7">Station 7</option>
<option value="8">Station 8</option>
<option value="9">Station 9</option>
<option value="10">Station 10</option>
<option value="11">Station 11</option>
<option value="12">Station 12</option>
<option value="12">Station 13</option>
</select>
</form>
<input type="button" value="Search" id="Search"/>
<div id="FareOutput"></div>
Javascript
$("#Search").on("click", function(){
var $opt = $("#StartStation option:selected"); //From: Selected
var strno = $opt.val(); // Start value of fare
var $opt2 = $("#EndStation option:selected"); //To: Selected
var endno = $opt2.val(); //End value of fare
// Fare Calculation -----------------------------------------------------
if (strno > endno) { // If the selected station start from South e.g Taft-North
var fare = (strno - endno);
}
else {
var fare = (endno - strno);
}
console.log(fare);
if (fare >=1 && fare <= 2){
var fareresult = "$13"; }
else if (fare >=3 && fare<=4){
var fareresult = "$16";
}
else if (fare >=5 && fare<=7 ){
var fareresult = "$20";
}
else if (fare >=8 && fare<=10 ){
var fareresult = "$24";
}
else if (fare >=11 && fare<=12 ) {
var fareresult = "$28";}
$("#FareOutput").html("Fare:" +" " + fareresult);
});
if/else语句的一个更好的解决方案是取差的绝对值:
var fare = Math.abs(strno - endno);
在strno > endno
中,比较字符串"10"
和"8"
,结果是false
,即"10" < "8"
。
当计算"10" - "8"
时,自动强制数字生效,结果为-2
。
@Gremash有一个更好的解决方案,我只想告诉你问题是什么:
进行比较时,如果(strno>endno),则值仍被视为字符串。字符串"8"大于字符串"10",这会引发比较。然后,您最终会进行减法运算,只有这样,值才会自动转换为数字。
在进行比较之前,您需要确保这些值是数字。
在比较&扣除您应该将中的值解析为数字(例如,要解析整数中的值,请使用js函数parseInt())。
计算前最好将数字转换为整数或浮点(取决于精度要求)。使用parseInt()
(用于javascript)或.toNum()
(用于jquery):
var $opt = $("#StartStation option:selected"); //From: Selected
var strno = parseInt($opt.val()); // Start value of fare
var $opt2 = $("#EndStation option:selected"); //To: Selected
var endno = parseInt($opt2.val()); //End value of fare
// Fare Calculation -----------------------------------------------------
if (strno > endno) { // If the selected station start from South e.g Taft-North
var fare = (strno - endno);
}
else {
var fare = (endno - strno);
}
此外,这里有太多的变量通过以下方式优化代码以使用较小的内存空间:
$("#Search").on("click", function(){
var $opt = $("#StartStation option:selected"); //From: Selected
var strno = $opt.val(); // Start value of fare
var $opt2 = $("#EndStation option:selected"); //To: Selected
var endno = $opt2.val(); //End value of fare
// Fare Calculation -----------------------------------------------------
var fare = 0;
if (strno > endno) { // If the selected station start from South e.g Taft-North
fare = (strno - endno);
}
else {
fare = (endno - strno);
}
console.log(fare);
var fareresult = "$0";
if (fare >=1 && fare <= 2){
fareresult = "$13"; }
else if (fare >=3 && fare<=4){
fareresult = "$16";
}
else if (fare >=5 && fare<=7 ){
fareresult = "$20";
}
else if (fare >=8 && fare<=10 ){
fareresult = "$24";
}
else if (fare >=11 && fare<=12 ) {
fareresult = "$28";}
$("#FareOutput").html("Fare:" +" " + fareresult);
});
希望这能有所帮助…:)
好的,试试这个:
$("#Search").on("click", function () {
var $opt = $("#StartStation option:selected"); //From: Selected
var strno =parseInt( $opt.val()); //New Integer Start value of fare
var $opt2 = $("#EndStation option:selected"); //To: Selected
var endno = parseInt($opt2.val()); //New Integer End value of fare
// Fare Calculation -----------------------------------------------------
if (strno > endno) { // If the selected station start from South e.g Taft-North
var fare = (strno - endno);
}
else {
var fare = (endno - strno);
}
console.log(fare);
if (fare >= 1 && fare <= 2) {
var fareresult = "$13";
}
else if (fare >= 3 && fare <= 4) {
var fareresult = "$16";
}
else if (fare >= 5 && fare <= 7) {
var fareresult = "$20";
}
else if (fare >= 8 && fare <= 10) {
var fareresult = "$24";
}
else if (fare >= 11 && fare <= 12) {
var fareresult = "$28";
}
$("#FareOutput").html("Fare:" + " " + fareresult);
});
使用pasreInt()存储整数值将解决问题,因为默认情况下它将strno和endno作为字符串。
- 用户名输入如果其他块不能正常工作/Javascript-jQuery-AJAX
- 变量只能在函数中局部工作,不能全局工作-Javascript
- onClick按钮不工作javascript/php/jquery mobile
- 点击骰子赢得't工作(javascript)
- for循环,if else不工作Javascript
- 获取下一个不工作Javascript DOM的同级父节点的子节点
- 可以'没有一个函数可以工作——Javascript
- OnFocus 不是工作 JavaScript HTML;不显示对焦时计算和按钮单击时
- 从 iframe 访问主站点中的工作 JavaScript
- 对于在循环中无法按预期工作 JavaScript
- 在阅读表单输入后写回HTML;t工作(Javascript)
- 复选框单击有效,取消选中复选框不工作Javascript
- 代码在Codepen中工作,而不是在浏览器中工作:JavaScript在鼠标滚轮上缩放SVG
- 当用户在这个工作javascript注释框中提交注释时,您将如何添加用户图像和名称
- 向Wordpress添加工作Javascript谷歌地图代码
- 确认/重定向功能不工作-javascript
- 当/patt/版本工作时,为什么RegExp版本不工作?(Javascript)
- Firefox加载项按钮代码不工作-Javascript
- 计算器功能不工作- Javascript
- 将工作JavaScript对象序列化为仅保留属性的JSON