JavaScript计算返回NaN作为结果

Vis*_*a K 1 javascript forms nan

我正在开发一个带日期和显示日期的html页面.我正在使用一种名为Zeller同余的公式.但在JavaScript中,公式返回结果"NaN".我用Google搜索了问题.无法弄清楚解决方案.这是获取值的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>
Run Code Online (Sandbox Code Playgroud)

这是返回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.. 
Run Code Online (Sandbox Code Playgroud)

请帮我.

提前致谢.

Vis*_*ioN 5

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

var d = parseInt(document.getElementById("dd").value, 10);
Run Code Online (Sandbox Code Playgroud)

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

var d = parseFloat(document.getElementById("dd").value);
Run Code Online (Sandbox Code Playgroud)

或捷径Number(v):

var d = +document.getElementById("dd").value;
Run Code Online (Sandbox Code Playgroud)