2017-10-16 12 views
0

最初の投稿はここにあります。私は学校のプロジェクトのためのイースター電卓を作成しようとしています。関数pasCalc(E)は、ブラウザコンソールの自身ので呼び出されると効果的です。しかし、フォームに年を入力すると、すべての日付がオフになります。別の関数で呼び出すと関数が正しく機能しない

申し訳ありませんが、これはnewbの質問のように聞こえますが、何が間違っているか把握できません...どんな助力も大変ありがとうございます。 :)

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

私が2050をフォームに入力すると、私は4月の13日を取得します(値は配列の中に格納されているので、関数からそれらを取り出すことができます)。しかし、pasCalc(E)が単独で呼び出されると、4月17日(正統イースターの正しい日付)が返されます。 –

+0

コンソールで 'pasCalc( '2050')'(引用符に注意してください)を呼び出すと、4月13日も同様に取得できますか? –

答えて

1

フォームフィールドは、デフォルトでは、文字列です。 Javascriptが、それは日付の年コンポーネントのような数値計算で動作するように、それは整数であることを知っているparseInt()

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

ありがとう!今はうまくいく。私はあなたがそれをチェックアウトしたい場合は準備ができたら完成品を投稿します! –

関連する問題