![]() |
Показаны 11 сообщений на этой странице |
Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- Java/Java Scripts (http://netadmin.ws/forum/forumdisplay.php?forumid=9)
-- Доступ к объектам создаваемым на лету (http://netadmin.ws/forum/showthread.php?threadid=10985)
Доступ к объектам создаваемым на лету
Ситуация такая: Есть на странице группа чекбоксов, у каждого уникальный ID типа cb_n_nn
n - уникальное число группы
nn - id элемента
Посредствам JS из списка можно выбрать опции которые налету прибавляют к существующим чекбоксам дополнительные. Для добовления используется innerHTML. Проблема в том что нужно получить доступ к объектам чекбокса, для этого используем
document.getElementById(cb_n_nn)
Все хорошо работает с теми боксами которые существуют уже в страничке а вот к новым, которые были добавленны потом при помощи JS доступа нет, как-будто их не существует. Как с этим бороться?
__________________
Всегда есть решение.
Если попытка доступа буквально в той же ф-ии что и создание, то не лишним попробовать setTimeout(). Возможно объекты просто не успели создаться.
__________________
The time was broken ...
В тойже функции, но уже при повторном вызове. Ð_то вообще нужно для того чтобы проверить выбран ли бокс и если выбран то при обновлении списка вывести выбранные тоже с галочкой. Кстати, забыл сказать: объекты создаються обычным html, в этом наверное и проблема. Есть ли в таком случае возможность обратится к ним?
__________________
Всегда есть решение.
Я вообще припоминаю что ИЕ не понимал объекты созданные через DOM, но с inner/outer html вроде всё было в порядке.
__________________
The time was broken ...
К сожелению нет
. Ни ИЕ ни firefox их не видит.
__________________
Всегда есть решение.
Даже gecko не видит? Странно. И какую ошибку он выдаёт?
__________________
The time was broken ...
нет ошибок, ну конечно я проверяю существует ли объект, но если допукать ошибку то выдает:
var_name has no properties
__________________
Всегда есть решение.
Так это не ошибка доступа, а отсутствие объекта. Скорей всего ты где-то ошибся в ID или объект не был создан вообще.
В частности gecko-браузеры вообще не имеют свойства innerHtml. Его надо реализовывать дописывая прототип для HTMLElement.
__________________
The time was broken ...
RaZEr никаких ошибок нет, уже повторно с этим сталкиваюсь. прототип создан и innerHtml работает прекрасно. Потом при выводе массива _POST все данные созданные динамически через JS присудствуют.
polo добавил 28-08-2005 в 20:22:05:
Вот пример того что я пытаюсь сделать:
<SCRIPT>
// Emulation of innerText for Mozilla.
if (window.HTMLElement && window.HTMLElement.prototype.__defineSetter__) {
HTMLElement.prototype.__defineSetter__("innerText", function (sText) {
this.innerHTML = sText.replace(/\&/g, "&").replace(/</g, "<").replace(/>/g, ">");
});
HTMLElement.prototype.__defineGetter__("innerText", function () {
var r = this.ownerDocument.createRange();
r.selectNodeContents(this);
return r.toString();
});
}
function add_com()
{
// получаем данные объекта
obj = document.getElementById('comment');
// создаем обект если не существует
if (!obj)
{
obj = document.createElement('input');
obj.type = 'hidden';
obj.id = 'comment';
obj.name = 'comment';
obj.value = '';
form_hd = document.getElementById('fields');
form_hd.appendChild(obj);
}
// запрашиваем данные
var comment = prompt('Изменить комментарий', obj.value);
obj.value = comment;
fill_data();
}
function fill_data() {
obj = document.getElementById('input');
data_out = document.getElementById('data');
var val = (obj) ? obj.value : 'объект не найден, тут ошибка';
data_out.innerHTML = 'Комментарий: ' + val;
}
</SCRIPT>
<a href="#" onClick="add_com();">add comment</a>
<span id="data"></span>
<span id="fields"></span>
__________________
Всегда есть решение.
quote:Как сказать ... ты создаёшь объет с id=comment:
RaZEr никаких ошибок нет
__________________
The time was broken ...
Ты прав, это ошибка. Чтож у меня на странице не работает? Пойду разбираться.
polo добавил 28-08-2005 в 21:43:23:
Тьфу ты блин, всему виной была функция которая осуществляла получение объекта. Некорректно работала с созданными объектами. Тему можно считать закрытой.
__________________
Всегда есть решение.
| Формат времени GMT. Текущее время 14:27. | Показаны 11 сообщений на этой странице |
Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.