Javascript比较运算符/数字转换不起作用
我想比较两个不同HTML输入框中的两个值 这是我的HTML: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"
<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);
}
}