2010-08-28 9 views
0

Je travaille sur un script simple pour transmettre la valeur "... php? Answer = 1" si java est activé. J'ai jusqu'ici ...Le document simple ne fonctionne pas

<script language="text/javascript"> 
document.form.answer.value=1; 
</script> 
</head> 
<body> 
<form name="form" action="enabled_catch.php" method="get"> 
<input type="hidden" name="answer"> 
<input type="submit" value="click me"> 
</form> 

... mais le script ne semble pas attribuer ba answer.value = « 1 » - Je ne sais pas pourquoi. Pouvez-vous aider?

Répondre

8

Cela se produit parce qu'au moment où vous affectez cette valeur en utilisant javascript (ne pas confondre avec Java) le DOM n'est pas encore chargé et le formulaire n'existe pas. Essayez ceci:

<script type="text/javascript"> 
window.onload = function() { 
    document.form.answer.value = '1'; 
}; 
</script> 

ou mieux attribuer un identifiant à votre entrée et utiliser cet ID:

<head> 
<script type="text/javascript"> 
window.onload = function() { 
    document.getElementById('answer').value = '1'; 
}; 
</script> 
</head> 
<body> 
    <form name="form" action="enabled_catch.php" method="get"> 
     <input type="hidden" id="answer" name="answer" /> 
     <input type="submit" value="click me" /> 
    </form> 
</body> 

ou même mieux utiliser un framework javascript tel jQuery pour manipuler le DOM pour assurer la compatibilité du navigateur croix:

<script type="text/javascript"> 
$(function() { 
    $(':hidden[name=answer]').val('1'); 
}); 
</script> 
+1

l'autre alternative est de déplacer le bloc javascript à la fin du document, quelque part après la balise '' . –

+0

@ Marc B, oui, bon point. –

+0

tout ce qui précède fonctionne très bien - JUSQU'A ajouter (parce que je veux que ce processus se produise automatiquement), alors la valeur ne retourne pas – giles

Questions connexes