Обращение к полю 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, время: 03:46. |