Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.07.2009, 13:01
Новичок на форуме
Отправить личное сообщение для rwety Посмотреть профиль Найти все сообщения от rwety
 
Регистрация: 27.07.2009
Сообщений: 3

получить ссылку на родительский элемент(контейнер)
есть таблица в которой лежит checkbox
<table>
<tr>
<td class="lefttd" id="cell">
<input id="CheckboxBut" type="checkbox" />
</td>
</tr>
</table>

при нажатии на checkbox нужно найти id родительского элемента,т.е cell.
как получить id checkbox'а на который нажали я знаю. Теперь нужно получить ссылку на td в котором находится checkbox.
Ответить с цитированием
  #2 (permalink)  
Старый 27.07.2009, 13:04
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Рекурсивно проходите по parentNode и проверяйте наличие у него id.
Ответить с цитированием
  #3 (permalink)  
Старый 27.07.2009, 13:12
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

getElementById отменили?
Ответить с цитированием
  #4 (permalink)  
Старый 27.07.2009, 13:17
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от Riim
getElementById отменили?
Ну может неизвестен id
Ответить с цитированием
  #5 (permalink)  
Старый 27.07.2009, 16:28
Новичок на форуме
Отправить личное сообщение для rwety Посмотреть профиль Найти все сообщения от rwety
 
Регистрация: 27.07.2009
Сообщений: 3

getElementById никто не отменял.
Изначально id неизвестен. это я для примера написал.
думаю вариант, который посоветовал B~Vladi мне подойдет с некоторыми модификациями. Дело в том что наличие id проверять не совсем корректно(а если появится в td еще один дочерний элемент с id), но это не критично, тоже можно использовать.
В моем случае мне будет удобней использовать такую функцию
function getParent(el, parentTagName) {
    var obj = el;
    while (obj.tagName !== parentTagName) {
        obj = obj.parentNode;
    }
    return obj;
}

вешаем на событие, например, onclick:
onclick ="getParent(this, 'TD')"

всем спасибо
Ответить с цитированием
  #6 (permalink)  
Старый 27.07.2009, 16:37
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Я имел ввиду что-то вроде этого:

function getParent(obj, parentTagName) {
    return (obj.tagName==parentTagName)?obj:getParent(obj.parentNode, parentTagName);
}
Ответить с цитированием
  #7 (permalink)  
Старый 27.07.2009, 17:36
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Сообщение от B~Vladi
Я имел ввиду что-то вроде этого:
А зачем здесь рекурсия? Чем обычный цикл не подходит?

rwety, если среди предков не будет ни одного с нужным тегом, то цикл дойдет до html, у которого parentNode равен undefined/null, далее попытка считать свойство obj.tagName приведет к ошибке.

B~Vladi, с твоим вариантом та же проблема.
Ответить с цитированием
  #8 (permalink)  
Старый 27.07.2009, 17:41
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от Riim
B~Vladi, с твоим вариантом та же проблема.
Мы же знаем, что это не проблема
И код приводился не как универсальный.
Сообщение от Riim
А зачем здесь рекурсия? Чем обычный цикл не подходит?
Обычная рекурсия... Обычный цикл... Я мысль свою показал, а не исправил код. Когда-то я сам столкнулся с такой задачей и для меня это показалось самым простым и красивым решением.
Ответить с цитированием
  #9 (permalink)  
Старый 27.07.2009, 17:47
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Сообщение от B~Vladi
красивым решением
У нас очень разные понятия о красоте кода.
Ответить с цитированием
  #10 (permalink)  
Старый 27.07.2009, 17:52
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от Riim
У нас очень разные понятия о красоте кода.
Меньше кода - красивее
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
получить ссылку на текущий WebBrowser UDN Элементы интерфейса 1 20.07.2009 18:21
Получить объект содержащий caller no_alex Общие вопросы Javascript 14 20.03.2009 21:37
Как получить полную ссылку из относительной, с учётом базы Lexi Общие вопросы Javascript 11 15.03.2009 00:50
Получить значение ID через this gcolor Events/DOM/Window 5 14.01.2009 18:05
Можно ли получить имя экземпляра объекта внутри самого объекта? Ichigeki Общие вопросы Javascript 9 14.11.2008 19:00