2013-07-22 1 views
0

J'essaie d'afficher les entrées de formulaire en utilisant javascript. donc j'ai utilisé ce bloc de code JSComment obtenir des entrées de formulaire en dehors d'une fonction javascript?

<html> 
<head> 
</head> 
<body>  
<script> 
var text = document.form1.name.value; 
function printText(){ 
    document.write(text); 
} 
</script> 
<form name=form1> 
<input type="text" id="txt" name="name" ><br><br> 
<input type="button" value="Submit!" onClick="printText();" > 
</form> 
</body> 
</html> 

mais le code ci-dessus ne fonctionne pas. sa me donnant à la sortie undifined

mais quand je suis en train ci-dessous le code de son travail ....

<html> 
<head> 
</head> 
<body> 
<script> 
function printText(){ 
var text = document.form1.name.value; 
    document.write(text); 
} 
</script> 
<form name=form1> 
<input type="text" id="txt" name="name" ><br><br> 
<input type="button" value="Submit!" onClick="printText();" > 
</form> 
</body> 
</html> 

donc mon problème est la raison pour laquelle nous ne pouvons pas utiliser cette déclaration var text = document.form1.name.value; en dehors de la fonction?

Merci.

+0

http://stackoverflow.com/questions/500431/javascript-variable-scope traite de ce puits – EvilEpidemic

Répondre

0

Votre problème est juste le timing: JavaScript est exécuté à sa position dans le document. Par conséquent, le DOM auquel vous accédez n'est probablement pas complètement construit. Par conséquent, dans votre premier exemple, lorsque la ligne text = ... est exécutée, l'analyseur ne connaît pas votre élément de formulaire. De plus, votre commande ne crée pas de référence à la valeur, mais la copie simplement. Dans le second cas, cependant, seule la fonction est définie (ce qui est bien) et au moment où elle est appelée (et votre variable text est évaluée) l'élément de formulaire existe et tout fonctionne très bien.

+0

merci beaucoup, j'ai compris! –

0

Vous attribuez une valeur à la variable text lors du chargement du document et, dans un premier temps, elle est vide. Dans le second cas, vous appelez la fonction sur un clic de bouton qui obtient la valeur de forme et l'imprime

0

Vous affectez la valeur de formulaire au chargement de la fenêtre et que le formulaire n'est pas initialisé, c'est pourquoi il donne la valeur non définie.

Si vous voulez faire alors global du texte var faire:

var text = ""; 
function printText(){ 
    text = document.form1.name.value 
    document.write(text); 
} 

Si vous mettrez votre script à la fin il initialiser la valeur nulle comme dans le démarrage de la valeur sera la nulle type d'entrée.

Vous avez donc besoin d'initialiser la variable au démarrage, puis vous pouvez y mettre la valeur.

Questions connexes