Partage
  • Partager sur Facebook
  • Partager sur Twitter

Affichage trop rapide

Sujet résolu
    13 novembre 2008 à 17:12:40

    Bonjour à tous,

    je suis désolé pour le côté obscur du titre mais je ne sais pas comment le dire de manière plus explicite. Voilà, c'est tout bête, j'ai un TP à faire où je dois créer un formulaire qui demande un nombre, puis calculer la factorielle de ce nombre et afficher le résultat dans la même page que le formulaire.
    Tout cela marche très bien, la factorielle retourne bien ce qu'on attend d'elle et le résultat est bien affiché. Le problème c'est qu'il n'est affiché qu'une demi-seconde ! =( Comme j'ai du mal à formuler le problème en mots clairs, j'ai pas trouvé de quoi m'aider sur Google.

    Voici les sources, au cas où le problème viendrait de là =D :
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
    	<head>
    		<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
    
    		<title>Un gros slip</title>
    		
    		<script type="text/javascript" src="fact.js">
    		</script>
    
    	</head>
    
    	<body>
    
    		<form action="fact.html" method="post">
    		
    		<p>
    	
    			<label for="param">Saisissez un nombre :</label>
    			<input type="text" id="param"/>
    
    			<input type="submit" value="Calculer" onclick="document.getElementById('resultat').innerHTML=fact(document.getElementById('param').value)"/>
    
    		</p>
    
    		</form>
    
    	<p id="resultat"> </p>	
    
    	<p>
       		<a href="http://validator.w3.org/check?uri=referer">
    			<img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0 Strict" height="31" width="88" />
    		</a>
      	</p>
    
    	</body>
    
    </html>
    


    function fact(x)
    {	
    	if(x == 0)
    	{
    		return 1;
    	}
    	else if(x > 0)
    	{
    		return x * fact(x-1);
    	}
    	else
    /* Ouais je sais le contrôle est foireux =D */
    	{
    		alert("La factorielle se calcule avec des nombres positifs ou nuls");
    	}
    }
    
    • Partager sur Facebook
    • Partager sur Twitter
      13 novembre 2008 à 17:18:47

      Ce qui se passe, en pratique, c'est que tu soumets ton formulaire. Du coup la page est rechargée lorsque tu cliques sur ton bouton. Si tu vois l'affichage une demi-seconde, c'est juste le temps que ton navigateur soumette le formulaire :p
      Remplace ton bouton par un bouton de type "button" afin qu'il n'y aie pas de soumission de formulaire (et donc pas de rechargement de la page) :
      <input type="button" value="Calculer" onclick="document.getElementById('resultat').innerHTML=fact(document.getElementById('param').value)"/>
      
      • Partager sur Facebook
      • Partager sur Twitter
        13 novembre 2008 à 17:29:58

        Ah ouais pas bête =)
        Merci à toi ;)
        • Partager sur Facebook
        • Partager sur Twitter

        Affichage trop rapide

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown