textarea和javascript

时间:2010-07-28 17:27:27

标签: javascript

我正在尝试在加载php文件时设置文本...我正在做这样的事情:

<?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仍为空。

我不明白为什么!?

有人可以帮助我吗

4 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

[0]

var enquiryTextArea = document.getElementsByName('enquiry')[0]; a.value="blah blah blah"; 告诉您变量的确切含义。它是查询文本字段本身。不是数组。如果您关心代码大小,可以使用javascript minifier。

更好的是,您可以使用getElementById()作为名称属性在非表单相关标签上弃用,并且在选择一个特定元素时更好:

enquiryTextArea

这听起来很典型,但firebug for firefox在诊断这类问题时可能是一个巨大的帮助,就像使用javascript完成任何事情时jquery一样。 :d

答案 2 :(得分:0)

使用:

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

它应该有效。 但我同意梅德的评论。如果您有多个具有相同名称的textarea并且想要更改所有这些文本区域,则应将其置于for循环中,如下所示:

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

答案 3 :(得分: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标签中:

<body onLoad="foo();">