我正在开发一个带日期和显示日期的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>
以下是返回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..
请帮帮我。
提前致谢。
答案 0 :(得分:5)
在某些情况下,公式中的+
符号将执行字符串连接而不是求和,就像在JavaScript "1" + 1 === "11"
中一样。您需要将值从字符串(从表单字段返回)转换为具有parseInt
或parseFloat
函数的数字:
var d = parseInt(document.getElementById("dd").value, 10);
或支持浮点数(如果需要):
var d = parseFloat(document.getElementById("dd").value);
或Number(v)
的快捷方式:
var d = +document.getElementById("dd").value;
答案 1 :(得分:0)
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>