javascript
2010-07-28 71 views 0 likes 
0

我试图加载PHP文件时,设置文本......我做财产以后这样的:textarea的和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>"; ?> 

现在我知道,这是愚蠢的,但只是一个文本。我想先做一个评估,如果有,然后填写文本区域

源生成它有正确的,没有javascript错误,但textarea仍然是空的。

我不明白为什么!?

有人可以帮助我走出这个

+0

这会更好,如果我们可以看看生成的HTML。 – Triptych 2010-07-28 17:38:30

回答

1

getElementsByTagName返回现场节点列表。如果您的元素有ID,请使用getElementById。如果要在节点列表中的多个元素上执行此操作,请使用for循环。

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

在你当前的代码中,假设你只有(或者想访问)一个textarea,你可以使用'a [0] .value'而不是'a.value' – 2010-07-28 17:33:18

1

getElementsByName()返回阵列中的所有具有指定名称的元素。如果您的文本区域是名为“查询”的页面上的第一个元素,则可以添加[0]以从数组中选择它。其次你永远不应该使用单字符变量名称。他们很难理解和合作。这是你的代码的可读性更强的版本,应该工作:

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

enquiryTextArea告诉你什么该变量的手段。它的查询文本字段本身。不是数组。如果你关心代码大小,你可以使用javascript minifier。

更妙的是,你可以使用getElementById()的name属性是不建议使用非形式相关的标记,是更好的选择一个特定的元素时:

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

这是要健全真的很典型,但firebug for firefox能当诊断这些问题时可以得到很大的帮助,当使用javascript做任何事情时,jquery也是如此。 :d

0

用途:

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

,它应该工作。 但我同意meder的评论。如果你有一个以上的文本区域具有相同的名称,你想改变所有的人,你应该把这个在for循环中,像这样:

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

是空的,直到页面加载后。

在您的标记中,放置一个onLoad事件,并使您的代码成为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>"; 

然后在身体标记:

<body onLoad="foo();"> 
相关问题