Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как обратится из функции к вызвашему элементу?
 
 автор: Zilog   (22.02.2009 в 21:57)   письмо автору
 
 

Как обратится из функции к вызвашему ээлементу?

Допустим есть ссылка:
<a href="url" class="myclass" onlick="ChangeClass()"></a>

Есть скрипит
function ChangeClass()
{
вот тут хочу обратится к ссылке, и поменять класс.
как обратится?
}

  Ответить  
 
 автор: PAT   (22.02.2009 в 22:09)   письмо автору
 
   для: Zilog   (22.02.2009 в 21:57)
 

Вариант 1:
onclick="ChangeClass(this)"
и в функции
function ChangeClass (obj) {
...
obj.className = 'новое имя класса';
...
}


Вариант 2: в самой ссылке ничего не менять, а в функции прописать
function ChangeClass (evt)
{
...
evt = evt || event, obj = evt.target || evt.srcElement;
obj.className = 'новое имя класса';
...
}



Ну и, если атрибут TARGET, отличный от _self у ссылки вы не задействуете, то в обоих случаях после вызова функции по клику необходимо отменить "действие по умолчанию" (переход по указанному url в атрибуте HREF ссылки), т.е. надо прописывать везде
onclick="ChangeClass(); return false"
или
onclick="ChangeClass(this); return false"
, иначе ваше измение класса никто и не увидит :-)

  Ответить  
 
 автор: Zilog   (22.02.2009 в 22:29)   письмо автору
 
   для: PAT   (22.02.2009 в 22:09)
 

Спасибо, дружищще! Очень подробно, отдельное спасибо за развернутый ответ.

Ща попробуем.


Я хочу сделать закладки, которые показывают нужный див, скрывая остальные. С дивами вроде разобрался - эт нужно что бы текущий выбор подсветить.

Тут возникает вопрос - а если юзверь обновил страницу? Никак, кроме сессий, нельзя запомнить выбор? А если сессии - то надо через аякс устанавливать указатель на закладку, так?

и еще вопрос - во втором варианте что за параметр evt получает функция?

  Ответить  
 
 автор: sl1p   (22.02.2009 в 22:49)   письмо автору
 
   для: Zilog   (22.02.2009 в 22:29)
 

зачем сессии? яваскрипт умеет работать с куки.

  Ответить  
 
 автор: Zilog   (22.02.2009 в 23:29)   письмо автору
 
   для: sl1p   (22.02.2009 в 22:49)
 

Намёк понял.


Вот такой вопрос возник - а как обратится к родителю вызывающего элемента? :)
Есть в яве что то вроде parentId?

  Ответить  
 
 автор: sl1p   (23.02.2009 в 00:29)   письмо автору
 
   для: Zilog   (22.02.2009 в 23:29)
 

element.parentNode;

  Ответить  
 
 автор: PAT   (23.02.2009 в 04:24)   письмо автору
 
   для: Zilog   (22.02.2009 в 22:29)
 

Реально функция во втором варианте ничего не получает.
Но аргумент evt нужен.
Для браузеров типа Mozilla.

  Ответить  
 
 автор: Zilog   (28.02.2009 в 07:12)   письмо автору
 
   для: PAT   (23.02.2009 в 04:24)
 

>Реально функция во втором варианте ничего не получает.
>Но аргумент evt нужен.
>Для браузеров типа Mozilla.

Только обратил внимание - в FF в этот код не работает:

    evt = evt || event, obj = evt.target || evt.srcElement; 


страница при клике уходит в перезагузку. Как бы оживить?

  Ответить  
 
 автор: PAT   (01.03.2009 в 14:20)   письмо автору
 
   для: Zilog   (28.02.2009 в 07:12)
 

Правильно, не работает.
Обмишурился я.

Надо так:
var evt = (window.event) ? window.event : document.createEvent ('MouseEvents'), obj = evt.target || evt.srcElement;

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования