2017-10-16 3 views
0

Premier message ici. J'essaie de créer une calculatrice de Pâques pour un projet d'école. La fonction pasCalc (E) fonctionne très bien lorsqu'elle est appelée sur son propre sur la console du navigateur. Toutefois, lorsque je tape une année dans mon formulaire html, toutes les dates sont désactivées.La fonction ne fonctionne pas correctement lorsqu'elle est appelée par une autre fonction

Désolé si cela ressemble à une question de newb, mais je ne peux pas comprendre ce qui ne va pas ... Toute aide sera grandement appréciée, merci pour votre temps! :)

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

* « toutes les dates sont éteintes » * Pouvez-vous être plus précis? Quel est le résultat auquel vous vous attendez et qu'obtenez-vous? Je suppose que le problème est que 'E' est une chaîne et non un nombre lors de la lecture de la valeur de l'élément d'entrée. –

+0

si je saisis 2050 dans le formulaire je reçois le 13 avril (les valeurs sont stockées dans un tableau pour le moment, donc je peux les sortir de la fonction). Lorsque le pasCalc (E) est appelé seul, il retourne le 17 avril (qui est la date correcte pour la pâque orthodoxe). –

+0

Lorsque vous appelez 'pasCalc ('2050')' (notez les guillemets) dans la console, obtenez-vous également le 13 avril? –

Répondre

1

champs de formulaire, par défaut, sont des chaînes. Pour Javascript pour le savoir est un entier pour qu'il fonctionne avec des calculs numériques comme la composante de l'année d'une date, l'envelopper dans un appel à parseInt()

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

Merci beaucoup! Cela fonctionne très bien maintenant. Je vais poster le produit fini lorsque vous êtes prêt si vous voulez le vérifier! –