Javascript 为什么“如果”语句不起作用?

Javascript 为什么“如果”语句不起作用?,javascript,jquery,html,Javascript,Jquery,Html,JavaScript function AdultNumber(){ /* Ticket Number Validation */ var AdInput = $("#adult").val(); if (AdInput > 0 ){ document.getElementById("AdTickError").textContent = ""; return true; } else if( A

JavaScript

function AdultNumber(){              /* Ticket Number Validation   */  
    var AdInput = $("#adult").val();

    if (AdInput > 0 ){
        document.getElementById("AdTickError").textContent = "";
        return true;

    } else if( AdInput > 20) {
        confirm("You sure you want 20+ Passengers?");
        return true;
    } else {
        document.getElementById("AdTickError").textContent = "Incorrect Enter Correct Number Of Passengers";
        return false;
    }
}
HTML:

<label for="Adult-ticket" class="center-label">Adults(+16)</label>
    <input type="number" id="adult" name="user_adult">
<label id = "AdTickError"></label>

如果用户输入超过20,为什么不显示确认框?我希望,如果用户选择20或以上,确认框会提示用户是否要继续。从DOM元素检索的值始终被视为字符串。你需要说:

var AdInput = parseFloat($("#adult").val());

或者,根据您的需要,您可能需要使用parseInt而不是parseFloat来获取整数而不是浮点。

您可能需要更改此条件:

如果输入>0

为此:


如果AdInput>0&&AdInput,一个问题是它总是会命中第一个if语句,因为任何大于20的语句都大于0。所以它不会进入else-if语句。我知道这听起来很疯狂,但这可能是其他语言生物的工作吗?你调用过函数AdultNumber吗?没有必要这样做。无论如何,关系比较运算符>都会隐式地将值转换为数字。如果不是true,比较运算符会将数字视为字符串并比较其长度。Y2H是正确的。费利克斯·金你们一定是JS的新手。@Anarakanitach:你们在开玩笑吧?>何时开始比较字符串的长度?如果有,它会根据字典顺序比较字符串。例如,ab0与200>0相同。不需要显式类型转换。请参阅规范:也许这是一个更好的例子来说服您:20<100为假,但20<100或20<100为真。OP代码的问题只是条件的顺序,而不是值的数据类型。