2010-07-28 3 views
0

Я пытаюсь установить текст при загрузке файла PHP ... Я делаю Somthing так:текстовое поле и 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>"; ?> 

Теперь я знаю, что это глупо, но это просто текст. Сначала я хочу сделать оценку, а если есть и id, то заполните текстовую область

Исходный код сгенерирован правильно, и ошибок в javascript нет, но текстовая область остается пустой.

Я не понимаю, почему !?

Может кто-то помочь мне на этом

+0

Это будет идти лучше, если мы посмотрим на сгенерированный HTML может. – Triptych

ответ

1

getElementsByTagName возвращает список живого узла. Если ваш элемент имеет идентификатор, используйте getElementById. Если вы хотите сделать это по нескольким элементам в списке узлов, используйте цикл for.

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

В вашем текущем коде, предполагая, что у вас есть (или хотите получить доступ) к одному текстовому полю, вы можете использовать 'a [0] .value' вместо' a.value' –

1

getElementsByName() возвращает массив всех элементов с указанным именем. Если ваша текстовая область является первым элементом на странице с именем «запрос», вы можете добавить [0], чтобы выбрать его из массива. Во-вторых, вы никогда не должны использовать односимвольные имена переменных. Их гораздо труднее понять и работать. Это более читаемый вариант кода, который должен работать:

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

enquiryTextArea говорит вам именно то, что переменные средства. Его текстовое поле запроса само по себе. Не массив. Если вам нужен размер кода, вы можете использовать javascript minifier.

еще лучше, вы можете использовать getElementById() в качестве имени атрибута является принизить тег, не связанные с формой и лучше при выборе одного конкретного элемента:

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

Это будет звучать очень типично, но firebug for firefox может ОГРОМНАЯ помощь при диагностике таких проблем, как может, jquery при выполнении абсолютно ничего с javascript. : D

0

Использование:

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

И он должен работать. Но я согласен с комментарием медитера. Если у вас есть более чем один текстовое поле с тем же именем, и вы хотите изменить их все, вы должны поставить это в цикле, как это:

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();">