JavaScript计算返回NaN作为结果

JavaScript calculations return NaN as result

本文关键字:结果 NaN 计算 返回 JavaScript      更新时间:2023-09-26

我正在开发一个html页面,需要日期和显示日期。我用的是一个叫泽勒同余的公式。但是在JavaScript中,公式返回结果"NaN"。我在谷歌上搜索了这个问题。我想不出解决办法。下面是接受值的html:

<form method="post">
<br/>
day:<input id="dd" name="dd" type="text"/><br/>
month:<input id="mm" name="mm" type="text"/><br/>
year:<input id="yy" name="yy" type="text"/><br/>
<input type="submit" value="go" onclick="day()"/><br/>
</form>

这是返回NaN的JavaScript公式。

function day() { 
var d=document.getElementById("dd").value;
var m=document.getElementById("mm").value;
var y=document.getElementById("yy").value;
var h=(d+(((m+1)*26)/10)+y+(y/4)+6*(y/100)+(y/400))%7;//returns NaN
var d2=((h+5)%7); code continues.. 

请帮帮我。

提前感谢。

在某些情况下,公式中的+符号将执行字符串连接而不是求和,如JavaScript "1" + 1 === "11"。您需要将值从字符串(从表单字段返回)转换为具有parseIntparseFloat函数的数字:

var d = parseInt(document.getElementById("dd").value, 10);

或支持浮点数(如果需要):

var d = parseFloat(document.getElementById("dd").value);

Number(v)的快捷方式:

var d = +document.getElementById("dd").value;
  Convert your values into numbers for use parseInt();
  <script>
  function day() { 
  var D=document.getElementById("dd").value;
  var M=document.getElementById("mm").value;
  var Y=document.getElementById("yy").value;
  var d=parseInt(D);
  var m=parseInt(M);
  var y= parseInt(Y);
  var h=(d+(((m+1)*26)/10)+y+(y/4)+6*(y/100)+(y/400))%7;
  alert(h);
 }
</script>
<form method="post">
 <br/>
 day:<input id="dd" name="dd" type="text"/><br/>
 month:<input id="mm" name="mm" type="text"/><br/>
 year:<input id="yy" name="yy" type="text"/><br/>
 <input type="submit" value="go" onclick="day()"/><br/>
 </form>