我正在尝试在加载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仍为空。
我不明白为什么!?
有人可以帮助我吗
答案 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();">