为什么这个javascript函数停止工作

Why does this javascript function stop working?

本文关键字:函数 停止工作 javascript 为什么      更新时间:2023-09-26

我这里有一个简单的比较应用程序,它接受2个数字,查看哪个数字更大,然后相应地更改段落的内部HTML。当我运行它时,它似乎工作正常,但当我在第3次或第4次左右开始插入新数字时,它停止工作,并开始说数字越低越高。这种情况发生时似乎是随机的。有人能向我解释一下为什么会发生这种事吗?

HTML

<p>Enter 2 numbers to see which one is highest.</p>
<input type="text" id="firstnumber" class="inputs" class="clearme"/>
<input type="text" id="secondnumber" class="inputs"/>
<input type="button" class="inputs" value="submit" id="button"/>
<p id ="message" style="color: blue;">Answer appears here.</p>

CSS

.inputs {
  float : left;
}
#secondnumber {
  clear: both;
}
#button {
  clear: left;
}
p {
  clear: both;
}

JavaScript

function myfunction(num1, num2) {
  if (num1 > num2) {
    document.getElementById("message").innerHTML = "The Higher number is " + num1 + ", which was the first value.";
  } else {
    document.getElementById("message").innerHTML = "The Higher number is " + num2 + ", which was the second value.";
  }
}
document.getElementById('button').onclick = function(){
  var x = document.getElementById("firstnumber").value;
  var y = document.getElementById("secondnumber").value;
  myfunction(x, y);
  console.log(x);
  console.log(y);
}

JSFiddle

非常感谢。

您需要先转换数字,然后再进行比较。您可以通过使用Number()函数或一元加号来实现这一点。

if (Number(num1) > Number(num2)) {
  //...
};

JSFiddle

if (+num1 > +num2) {
  //...
};

JSFiddle

需要将字符串转换为数字。

  • Number(Str)
  • parseInt(Str, 10)
  • +Str

很少有办法是:

function myfunction(num1, num2) {
  if (num1 > num2) {
    document.getElementById("message").innerHTML = "The Higher number is " + num1 + ", which was the first value.";
  } else {
    document.getElementById("message").innerHTML = "The Higher number is " + num2 + ", which was the second value.";
  }
}
document.getElementById('button').onclick = function() {
  var x = Number(document.getElementById("firstnumber").value);
  var y = Number(document.getElementById("secondnumber").value);
  myfunction(x, y);
  console.log(x);
  console.log(y);
}
.inputs {
  float: left;
}
#secondnumber {
  clear: both;
}
#button {
  clear: left;
}
p {
  clear: both;
}
<p>
  Enter 2 numbers to see which one is highest.
</p>
<input type="text" id="firstnumber" class="inputs" class="clearme" />
<input type="text" id="secondnumber" class="inputs" />
<input type="button" class="inputs" value="submit" id="button" />
<p id="message" style="color: blue;">
  Answer appears here.
</p>

将输入的值作为字符串进行比较。

因此,像"10"这样的数字看起来会小于"2",因为它们是用字典而不是数字进行比较的。当你比较它们时,你可以通过在num1和num2参数中添加一个+来解决这个问题

if (+num1 > +num2)