Javascript.RU

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

Обращение к родителю
Добрый день.
У меня такой вопрос, как можно обратиться к родительскому блоку элемента
вот есть например такой код
Код:
<div class="block">
                  <h4>Lorem ipsum</h4>
                  <dfn>Sed diam nonumy eirmod tempor invidunt ut labore et dolore. </dfn>
                  <a href="#" class="more">more info</a>
</div>
Так вот собственно, как по клику на <a href="#" class="more">more info</a> добавить класс для <div class="block">?
Ответить с цитированием
  #2 (permalink)  
Старый 11.11.2008, 16:27
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

function addClass() {
    this.parentNode.className += ' MyClassName';
    var e = arguments[0] || window.event;
    e.preventDefault ? e.preventDefault() : e.returnValue = false;
}
var i, list = document.getElementsByClassName('more'), length = list.length, ie = 0 /*@cc_on + 1 @*/;
for(i = 0; i < length; i++) {
    if(ie) {
        var listener = function() {
            addClass.call(list[i]);
        };
        list[i].attachEvent('onclick', listener);
    }
    else list[i].addEventListener('click', addClass, false);
}

Метод «getElementsByClassName» работает только в новых браузерах, его кросс-браузерную реализацию можно посмотреть здесь.

Последний раз редактировалось Octane, 11.11.2008 в 16:38.
Ответить с цитированием
  #3 (permalink)  
Старый 11.11.2008, 20:24
Новичок на форуме
Отправить личное сообщение для tantos Посмотреть профиль Найти все сообщения от tantos
 
Регистрация: 11.11.2008
Сообщений: 4

попробывал, вот так

Код:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>
  <title></title>

  <script language="JavaScript" type="text/javascript">
  /*<![CDATA[*/
function addClass() {
    this.parentNode.className += ' MyClassName';
    var e = arguments[0] || window.event;
    e.preventDefault ? e.preventDefault() : e.returnValue = false;
}
var i, list = document.getElementsByClassName('more'), length = list.length, ie = 0 /*@cc_on + 1 @*/;
for(i = 0; i < length; i++) {
    if(ie) {
        var listener = function() {
            addClass.call(list[i]);
        };
        list[i].attachEvent('onclick', listener);
    }
    else list[i].addEventListener('click', addClass, false);
}
  /*]]>*/
  </script>
</head>

<body>
     <div class="block">
                  <h4>Lorem ipsum</h4>
                  <dfn>Sed diam nonumy eirmod tempor invidunt ut labore et dolore. </dfn>
                  <a href="javascript:addClass();" class="more">more info</a>
</div>
</body>

</html>
firebug выдает такую ошибку this.parentNode is undefined
Ответить с цитированием
  #4 (permalink)  
Старый 11.11.2008, 20:45
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Нафига
href="javascript:addClass();"

если в скрипте уже добавлены обработчики
if(ie) {
        var listener = function() {
            addClass.call(list[i]);
        };
        list[i].attachEvent('onclick', listener);
    }
    else list[i].addEventListener('click', addClass, false);

?
Ответить с цитированием
  #5 (permalink)  
Старый 11.11.2008, 20:57
Новичок на форуме
Отправить личное сообщение для tantos Посмотреть профиль Найти все сообщения от tantos
 
Регистрация: 11.11.2008
Сообщений: 4

а чет оно не вызывает ее по клику
Ответить с цитированием
  #6 (permalink)  
Старый 11.11.2008, 21:52
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Вы выполняете поиск элементов до того, как они появятся в документе
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title></title>
<script type="text/javascript">
window.onload = function() {
	function addClass() {
		 this.parentNode.className += ' MyClassName';
		 var e = arguments[0] || window.event;
		 e.preventDefault ? e.preventDefault() : e.returnValue = false;
	}
	var i, list = document.getElementsByClassName('more'), length = list.length, ie = 0 /*@cc_on + 1 @*/;
	for(i = 0; i < length; i++) {
		 if(ie) {
			  var listener = function() {
					addClass.call(list[i]);
			  };
			  list[i].attachEvent('onclick', listener);
		 }
		 else list[i].addEventListener('click', addClass, false);
	}
};
</script>
</head>
<body>
<div class="block">
	<h4>Lorem ipsum</h4>
	<dfn>Sed diam nonumy eirmod tempor invidunt ut labore et dolore. </dfn> <a href="#" class="more">more info</a> </div>
</body>
</html>

напомню, что «getElementsByClassName» надо доделать, чтобы работало везде…
Ответить с цитированием
  #7 (permalink)  
Старый 11.11.2008, 22:02
Новичок на форуме
Отправить личное сообщение для tantos Посмотреть профиль Найти все сообщения от tantos
 
Регистрация: 11.11.2008
Сообщений: 4

ага, спасибо
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обращение к форме октрытого окна SparkDSD Events/DOM/Window 3 27.02.2009 14:02
Обращение к переменным, созданным в одном фрейме из другого фрейма. snowfed Общие вопросы Javascript 7 13.01.2009 03:54
Обращение к полю SPAN на форме Period Общие вопросы Javascript 6 15.10.2008 23:09
Обращение к именам, полученным через Javascript baal1988 Events/DOM/Window 1 31.08.2008 15:08
Обращение к содержимому динамически добавляемого фрейма Esciloner Элементы интерфейса 4 21.06.2007 14:15