2009-02-22 7 views
4

Je viens de commencer à apprendre JavaScript et je me demande pourquoi cet extrait simple se bloque lorsque je clique sur le bouton "Appeler la fonction". Qu'est-ce que je rate?Débutant: navigateur suspendu en appel de fonction

<html> 
<head> 

<script type="text/javascript"> 
function myfunction() 
{ 
document.write("hello"); 
} 
</script> 

</head> 
<body> 

<form> 
<input type="button" 
onclick="myfunction()" 
value="Call function"> 
</form> 

</body> 
</html> 
+0

que voulez-vous dire par "se bloque"? – Canavar

+0

Lorsque j'ai cliqué sur le bouton "Appeler la fonction", mon onglet Firefox affiche une icône de "chargement de page" indéfiniment. – RexE

Répondre

3

Vous devez écrire dans un élément ou donner un élément de valeur, ou vous devez utiliser le document écrire comme ça:

<html> 
<head> 

<script type="text/javascript"> 
function myfunction() 
{ 
document.getElementById("lblMessage").innerText = "hello"; 
document.getElementById("txtMessage").value = "hello"; 
//document.write("hello"); 
} 
</script> 

</head> 
<body> 

<form> 

<script type="text/javascript"> 
document.write("This is written while page processed by browser !<br />"); 
</script> 

<input type="text" id="txtMessage" /><br /> 
<span id="lblMessage"></span><br /> 
<input type="button" 
onclick="myfunction()" 
value="Call function"> 
</form> 

</body> 
</html> 
+0

Great ScarletGarden! Merci de m'avoir montré comment faire les choses correctement. (Note: J'ai remarqué que le bit innerText ne fonctionnait pas pour moi dans Firefox en mode sans échec, bien qu'il ait fonctionné dans IE et Chrome.) – RexE

+0

De rien, Javascript est un langage de script excitant, profitez-en! – Canavar

1

Où pensez-vous que la fonction produira son "bonjour"? Droit dans le code source du bouton? Ça n'a aucun sens. Le navigateur est confus et se bloque. Document.write n'insère pas quelque chose par magie à la fin de votre document.

Il écrit ses trucs là où il s'appelle.

+0

Vous avez tort. Lorsqu'un document est analysé, document.write peut être utilisé pour insérer du contenu. Après l'analyse, le document est fermé. Si document.write est utilisé après la fermeture du document, un nouveau document est créé et remplace le document d'origine. Le navigateur n'est pas confus ni ne se bloque. – some

+0

Le navigateur de l'OP se bloque évidemment, il déclare clairement que là dans sa question. –

3

Si vous voulez simplement voir votre bouton faire quelque chose alors essayez:

alert("Hello"); 

au lieu du document.write.

1

Pas trop sûr de ce que vous entendez par « suspendre » ... Essayez ceci ... Les alertes peuvent être supprimées, mais vous informera de l'endroit où elles sont en cours d'exécution ...

<html> 
    <head> 
    <script type="text/javascript"> 
     function myFunction() { 
      //for debugging 
      alert('Made it into function'); 
      document.getElementById('MyOutputDiv').innerHTML = 'Word To Your Mom...'; 
      //for debugging 
      alert('function complete'); 
     } 
    </script> 
    </head> 
    <body> 
    <input type='button' onclick='myFunction();' value='Call Function'> 
    <br> 
    <div id='MyOutputDiv'></div> 
    </body> 
</html> 
0

document.write, mais où? Vous devez spécifier ceci.

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>Hello</title> 
</head> 
<body> 
<pre><script type="text/javascript"> 
function myfunction() { 
    d = document.getElementById('hello'); 
    d.style.display = "block"; 
    d = document.getElementById('callme'); 
    d.style.display = "none"; 
} 
</script> 
</pre> 
<div id="hello" style="display:none"> 
Hello 
</div> 
<div id="callme"> 
    <input type="button" 
    onclick="myfunction()" 
    value="Call function"> 
    </input> 
</div> 
</body> 
</html> 
0

Je ne peux pas expliquer le « pendre », mais s'il vous plaît jeter un oeil à cette page pour une introduction sur document.write: http://javascript.about.com/library/blwrite.htm Je voudrais également à la seconde que vous voulez probablement écrire à un élément spécifique la page plutôt que d'écraser toute la page.

Questions connexes