功能由另一个功能调用时不正确

问题描述:

第一篇文章在这里。我正在尝试为学校项目创建一个复活节计算器。当在浏览器控制台上调用自己的时,pasCalc(E)函数的工作效果很好。但是,当我在我的html 表格中键入一年时,所有日期都关闭。功能由另一个功能调用时不正确

对不起,如果这听起来像一个新问题,但我无法弄清楚有什么问题...任何帮助将不胜感激,谢谢你的时间! :)

function start() { 
 
    document.getElementById("orthodox").innerHTML = "Ορθόδοξο πάσχα:"; 
 
    //var E = document.getElementById("inputfield").value; 
 
    //console.log(E); 
 
    var pasxa = pasCalc(document.getElementById("inputfield").value) 
 
    console.log(pasxa); 
 
    //console.log(pasxa[0] + " " + pasxa[1]); 
 

 
    document.getElementById("orthodox").innerHTML += " " + pasxa; 
 
} 
 

 
function pasCalc(E) { 
 
    //var E = 2018; 
 
    var a = E % 19; 
 
    var T = (8 + 11 * a) % 30; 
 
    var month = "Mach"; 
 
    var K = Math.floor((E/100) - (E/400) - 2); 
 

 
    var iPanArx = 21 + (53 - T) % 30; 
 

 
    if (iPanArx > 31) { 
 
    var iPanArxM = iPanArx - 31; 
 
    month = "April"; 
 
    } else { 
 
    var iPanArxM = iPanArx; 
 
    } 
 

 
    var iPanTel = iPanArxM + K; 
 
    var Y = (E + Math.floor(E/4) + iPanArx) % 7; 
 
    var iPas = iPanTel + (7 - Y); 
 

 
    if (iPas > 30 && month == "April") { 
 
    month = "May"; 
 
    var iPas = iPas - 30; 
 
    } else if (iPas > 31 && month == "Marchυ") { 
 
    month = "April"; 
 
    var iPas = iPas - 31; 
 
    } 
 
    console.log(iPas + " " + month + " " + E); 
 
    var arr = []; 
 
    arr.push(iPas); 
 
    arr.push(month); 
 
    return arr; 
 
}
<div class="container align-center"> 
 
    <h1>Easter Calculator</h1> 
 
    <input id="inputfield" type="text" placeholder="Enter a Year..."> 
 
    <button class="btn btn-primary" onclick="start();">Submit</button> 
 
    <h5 id="orthodox">Orthodox Easter:</h5> 
 
    <h5>Catholic Easter:</h5> 
 

 
</div>

+1

*“的所有日期都关” *你能更精确?你期待的结果是什么,你会得到什么?我认为问题在于,从输入元素读取值时,E是一个字符串而不是数字。 –

+0

如果我以4月13日的形式输入2050(这些值现在存储在数组中,所以我可以将它们从函数中取出)。然而,当PasCalc(E)自己被调用时,它将返回4月17日(这是正统复活节的正确日期)。 –

+0

当您在控制台中调用'pasCalc('2050')'(注意引号)时,您是否也获得了4月13日? –

表单域,默认情况下,都是字符串。为了让Javascript才能知道这是一个整数,这样它像一个日期的年份部分数值计算工作,在呼叫包裹,parseInt()

var pasxa = pasCalc(parseInt(document.getElementById("inputfield").value)) 
+0

非常感谢!现在它工作得很好。准备好后,我会发布完成的产品,如果你想检查出来! –