2010-07-28 6 views
0

Je suis en train de définir le texte lors du chargement d'un fichier php ... Je suis en train de faire somthing comme ceci:textarea et javascript

<?php echo tep_draw_textarea_field('enquiry', 'soft', 50, 15); ?> 
<?php 
echo "<script> 
var a = document.getElementsByName('enquiry'); 
a.value='Pedido de Informação de Preço, relativamente ao producto: http://www.musicland.pt/musicstore/product_info.php?products_id=2581'; 
</script>"; ?> 

Maintenant, je sais que cela est stupide, mais est juste un texte. Je veux faire une évaluation en premier et s'il y a et id alors remplir la zone de texte

la source générée l'a correcte et il n'y a pas d'erreurs javascript mais la zone de texte reste vide.

Je ne comprends pas pourquoi !?

que quelqu'un peut me aider sur ce

+0

Cela ira mieux si nous pouvons jeter un coup d'oeil au code HTML généré. – Triptych

Répondre

1

getElementsByTagName retourne une liste de nœuds en direct. Si votre élément a un ID, utilisez getElementById. Si vous souhaitez effectuer cette opération sur plusieurs éléments de la liste de nœuds, utilisez une boucle for.

var a = document.getElementById('enquiry'); 
+2

Dans votre code actuel, en supposant que vous ayez seulement (ou que vous vouliez accéder) à une zone de texte, vous pouvez utiliser 'a [0] .value' au lieu de' a.value' –

1

getElementsByName()retourne un tableau de tous les éléments avec le nom spécifié. Si votre zone de texte est le premier élément de la page avec le nom "enquête", vous pouvez ajouter [0] pour le sélectionner dans le tableau. Deuxièmement, vous ne devriez JAMAIS utiliser des noms de variables à un seul caractère. Ils sont beaucoup plus difficiles à comprendre et à travailler. Ceci est une version plus lisible de votre code qui devrait fonctionner:

var enquiryTextArea = document.getElementsByName('enquiry')[0]; 
a.value="blah blah blah"; 

enquiryTextArea vous dit exactement ce que les moyens variables. C'est le champ texte de l'enquête lui-même. Pas un tableau. Si vous vous souciez de la taille du code, vous pouvez utiliser une minuterie javascript.

Mieux encore, vous pouvez utiliser getElementById() comme l'attribut name est désapprouver sur les étiquettes liées non forme et est mieux lors de la sélection d'un élément spécifique:

var enquiryTextArea = document.getElementById('enquiry'); 
a.value="blah blah blah"; 

Cela va sonner vraiment typique, mais firebug for firefox peut être une aide énorme lors du diagnostic de problèmes comme ceux-ci, comme jquery en faisant absolument n'importe quoi avec javascript. : D

0

Utilisation:

var a = document.getElementsByName('enquiry')[0]; 

Et cela devrait fonctionner. Mais je suis d'accord avec le commentaire de meder. Si vous avez plus d'un textarea avec le même nom et que vous voulez changer tous, vous devriez mettre cela dans une boucle, comme ceci:

var a = document.getElementsByName('enquiry'); 
for(var i=0; i<a.length; i++) 
    a[i].value = "Some Text"; 
0
var a = document.getElementsByName('enquiry'); 

est vide jusqu'à ce que la page se charge.

dans votre tag, de mettre un événement onLoad, et de faire de votre code une fonction que les appels onLoad.

echo "<script> 
function foo() { 
    var a = document.getElementsByName('enquiry'); 
    a.value='Pedido de Informação de Preço, relativamente ao producto: http://www.musicland.pt/musicstore/product_info.php?products_id=2581'; 
} 
</script>"; 

Et puis dans la balise body:

<body onLoad="foo();"> 
Questions connexes