2017-10-16 101 views
0

第一篇文章在這裏。我正在嘗試爲學校項目創建一個復活節計算器。當在瀏覽器控制檯上調用自己的時,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日? –

回答

1

表單域,默認情況下,都是字符串。爲了讓Javascript才能知道這是一個整數,這樣它像一個日期的年份部分數值計算工作,在呼叫包裹,parseInt()

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

非常感謝!現在它工作得很好。準備好後,我會發布完成的產品,如果你想檢查出來! –