Обращение к полю SPAN на форме
Есть форма, примерно такая:
<form method=POST name=img>
<input type=text name=txt1>
<input type=submit value=Отправить>
<span id=test></span>
</form>
Как мне переписать элемент SPAN внутри неё? innerHTML самой формы менять нельзя. document.getElementById тоже не получится использовать. Нужно что-то типа такого: "document.forms['img'].test.innerHTML = ...", только чтобы работало. |
Не совсем понял, что Вы хотите сделать, если просто перезаписать innerHTML тега <span> c идентификатором test, то достаточно написать так:
document.getElementById('test').innerHTML = 'какой-то html-код';
Если Вы хотите заменить весь узел <span id="test" /> на какой-то другой, то тут 2 варианта: 1. Удалить <span> и вставить новый узел:
var form = получаем_ссылку_форму;
form.removeChild(document.getElementById('test'));
var newNode = document.createElement('имя_тега_нового_узла');
form.appendChild(newNode);
2. Заменить <span> на новый узел
var form = получаем_ссылку_форму, newNode = document.createElement('имя_тега_нового_узла'), span = document.getElementById('test');
form.replaceChild(span, newNode);
|
Нет, мне нужно вставлять в конкретный span произвольный html.
document.getElementById('test').innerHTML = 'какой-то html-код';
Такой вариант не подходит из-за того, что на странице много форм с такими спанами. Они создаются динамически и их количество наперёд неизвестно, а мне нужно изменить span в конкретной форме. |
Вообще-то идентификатор должен быть уникальным, поэтому нельзя создавать несколько <span> с одинаковым идентификатором на одной странице.
|
А можно создать такой массив?
<span id=test[]></span> Его нумерация всегда будет соответствовать массиву форм? <form method=POST name=img[]><span id=test[]></span></form> |
Нет, идентификаторы так именовать нельзя.
Заведите, например, себе правило, что <span> в формах будет использоваться только для этих целей и получайте его, например так:
ссылка_на_форму.getElementsByTagName('span')[0].innerHTML = 'какой-то html-код';
Или например для всех таких <span> задайте один и тот же класс и обращайтесь по нему: <form action="">…<span class="test">…</span>…</form>
ссылка_на_форму.getElementsByClassName('test')[0].innerHTML = 'какой-то html-код';
Но метод «getElementsByClassName» работает только в новых браузерах, нужно будет написать функцию, которая выполнить тоже самое в старых браузерах. |
Это чудо. Первый вариант заработал. Спасибо большое.
|
| Часовой пояс GMT +3, время: 20:08. |