javascript
2010-07-28 36 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();"> 
相關問題