Javascript比较运算符/数字转换不起作用

Javascript比较运算符/数字转换不起作用,javascript,html,number-formatting,comparison-operators,Javascript,Html,Number Formatting,Comparison Operators,我想比较两个不同HTML输入框中的两个值 这是我的HTML: <input class="rowInput" id="startRow" type="number" style="margin-top: 15px;" placeholder="Beginning Row"> <input class="rowInput" id="enderRow" type="number" style="margin-top: 15px;" placeholder="Ending Row"

我想比较两个不同HTML输入框中的两个值

这是我的HTML:

<input class="rowInput" id="startRow" type="number" style="margin-top: 15px;" placeholder="Beginning Row"> 
<input class="rowInput" id="enderRow" type="number" style="margin-top: 15px;" placeholder="Ending Row">
当这两个元素都不是空的时候,我想比较它们,确保第一个输入框的编号小于第二个输入框的编号。如果更多,我希望弹出一个警报框。如果第一个输入框的编号小于第二个输入框的编号,则我希望发生其他事情,但目前我希望弹出一个不同的警报框

以下是与事件处理程序相关的函数:

function createFacings()
{
    var st = document.getElementById("startRow");
    var en = document.getElementById("enderRow");

    if(st.length == 0 || en.length == 0)
    {
         return;
    }

    if(st.value != "" && en.value != "")
    {
        if(st.value > en.value)
        {
            alert(st.value + " " + en.value + " " + "begin row is more than end row.");
        }
        else if(st.value < en.value)
        {
            alert(st.value + " " + en.value + " " + "begin row is less than end row. This is what we want.");
        }
    }
}


以下是原始代码的JSFIDLE:


我完全不知所措。有人能告诉我如何解决这个问题的正确方向吗?

我建议尝试使用数字功能:

    var st = document.getElementById("startRow").value;
    var en = document.getElementById("enderRow").value;

    if(st.length == 0 || en.length == 0)
    {
        return;
    }

    st = Number(st)
    en = Number(en)

    if(st > en)
    {
        alert(st + " " + en+" " + "begin row is more than end row.");
    }
    else if(st < en)
    {
        alert(st + " " + en + " " + "begin row is less than end row.This is what we want.");
    }
var st=document.getElementById(“startRow”).value;
var en=document.getElementById(“endError”).value;
如果(标准长度=0 | |标准长度=0)
{
返回;
}
st=数量(st)
en=数字(en)
如果(st>en)
{
警报(st+“”+en+“”+“”“开始行大于结束行”);
}
否则如果(st
替代方法 公认的答案完全是直截了当的。但这里有一个稍微不同的方法

JS

函数createFacings(){
var st=+document.getElementById(“startRow”).value,//`+`en?“更多”:“更少”,
“而不是最后一行。”,
这就是我们想要的;
警报(msg);
}
}

这些转换尝试在哪些方面不起作用?奇怪的是,您得到了该文档的印象。getElementById(“[someElement]”)是一个字符串(不是,它是一个元素或
null
),但您应该学习如何使用调试器。这将使您的生活更加轻松。我想指出,这个答案之所以有效,是因为它使用了return元素的value属性,而不是试图将HTMLElement强制为数字(产生
NaN
)。确实,如果将.value放入getElementById,则parseInt也可以工作,但是,如果可以避免的话,那么en.length就不能很好地发挥作用,而且它的清洁剂也不能放在任何时候
    /*I first tried this...*/
    var st = Number(document.getElementById("startRow"));
    var en = Number(document.getElementById("enderRow"));
    /*The above did not work. So then I tried this...*/
    var st = parseInt(document.getElementById("startRow"));
    var en = parseInt(document.getElementById("enderRow"));
    /*That did not work either. So then I tried this...*/
    var st = parseInt(document.getElementById("startRow"));
    var en = parseInt(document.getElementById("enderRow"));

   /*...which also did not work.*/
    var st = document.getElementById("startRow").value;
    var en = document.getElementById("enderRow").value;

    if(st.length == 0 || en.length == 0)
    {
        return;
    }

    st = Number(st)
    en = Number(en)

    if(st > en)
    {
        alert(st + " " + en+" " + "begin row is more than end row.");
    }
    else if(st < en)
    {
        alert(st + " " + en + " " + "begin row is less than end row.This is what we want.");
    }
   function createFacings() {
        var st = +document.getElementById("startRow").value, // `+` <- parseInt
            en = +document.getElementById("endRow").value;
        if (st && en) {
          msg = ["begin row is", 
                 st > en ? "more" : "less", 
                 "than end row.",
                 st < en ? "This is what we want."].join(' ');
          alert(msg);  
        }
    }