Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> вложенный OnClick 
:(
    Опции темы
SeregaLBN
Дата 11.11.2005, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 3.10.2003
Где: Киев

Репутация: нет
Всего: нет



Как сделать чтобы обработчик onclick невызывался рекурсивно при клике на 'test3'?
Код

<script language="JavaScript">
function OnClickCell() {
   alert("onClick");
}
</script>
<table align="center" cellpadding="0" cellspacing="0" border='0' width="100%">
<tr><td onclick="OnClickCell()">
   test1
</td></tr>
<tr><td onclick="OnClickCell()">
   test2
   <br>
   <table align="center" cellpadding="0" cellspacing="0" border='0' width="100%">
      <tr><td onclick="OnClickCell()">
         test3
      </td></tr>
   </table>
</td></tr>
</table>

PM MAIL   Вверх
Гость_12345
Дата 11.11.2005, 21:55 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Учебная задачка?
Код
<script language="JavaScript">
function OnClickCell(event) {event.cancelBubble = true;
   alert("+++");
}
</script>
<table align="center" cellpadding="0" cellspacing="0" border='0' width="100%">
<tr><td onclick="OnClickCell(event)">
   test1
</td></tr>
<tr><td onclick="OnClickCell(event)">
   test2
   <br>
   <table align="center" cellpadding="0" cellspacing="0" border='0' width="100%">
      <tr><td onclick="OnClickCell(event)">
         test3
      </td></tr>
   </table>
</td></tr>
</table>
(Все event в скобках понаставлены ради Мозиллы.)
  Вверх
Sardar
Дата 11.11.2005, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Цитата
Все event в скобках понаставлены ради Мозиллы.

Угу, только остановку для мозиллы, вернее для всех браузеров по стандарту DOM 2 Events, ты не сделал: event.stopPropagation();
ИE'шный cancelBubble ни в какие стандарты не входит, естественно мелкософту на это по барабану.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
SeregaLBN
Дата 14.11.2005, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 3.10.2003
Где: Киев

Репутация: нет
Всего: нет



Угу, понял. Спасибо.
Жаль что нельзя и для IE и для мозиллы писать один код...
PM MAIL   Вверх
Sardar
Дата 14.11.2005, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Цитата(SeregaLBN @ 14.11.2005, 11:50)
Жаль что нельзя и для IE и для мозиллы писать один код...

Можно писать по стандартам W3C, будет уверенность что в Опере, Мозилле, Safari и других браузерах работать будет, хотя бы большая часть. ИЕ тоже многое из стандартов поддерживает, но в случае с событиями большой и не исправимый уже годами облом...


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Гость_12345
Дата 14.11.2005, 17:20 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











SardarЯ пытался запустить event.stopPropagation() в FF, но не так, как в мануале от Мозиллы (там очень много кода), а попроще, но не пошло. Но обнаружил, что в FF этот код (выше) работает, на том и остановился.
  Вверх
Sardar
Дата 14.11.2005, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Млин всё, надоело, правила обновил, внёс новый пункт, а то столько народу думают что здесь телепаты smile

Выкладывай код, посмотрим. Точно знаю что stopPropagation() работает.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Гость_12345
Дата 15.11.2005, 12:45 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Sardar: Это ты мне? Код выше, 2-е сообщение, его другого нет. А почему эксперименты с stopPropagation() не пошли, я сам догадываюсь, но не хочется писать так, как в http://www.mozilla.org/docs/dom/domref/examples.html#998748 , это длинно для такой задачи.
  Вверх
Sardar
Дата 15.11.2005, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Удивительная вещь, мозилла с каждой новой версией всё больше "отклонений" ИЕ поддерживает, так есть document.all, самоинициализируемые обьекты по ид в глобальном окружении. У меня 1.0.7, поддерживает cancelBubble, хотя это не стандарт, но всё таки безглючность "кривых" скриптов дороже smile

Вот так должно быть по стандарту, естественно ИЕ не понимает, Мозилла и Опера отрабтали на ура. Вывод: на стандарты не плюём, пишем дла ИЕ и для всех, но держим в голове что в случае чего мозилла отработает smile

Код
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
.........

<script language="JavaScript">
function OnClickCell(event) {
   //event.cancelBubble = true;
   if(event.stopPropagation) event.stopPropagation();
   alert("+++");
}
</script>
<table align="center" cellpadding="0" cellspacing="0" border='1' width="100%">
<tr><td onclick="OnClickCell(event)">
   test1
</td></tr>
<tr><td onclick="OnClickCell(event)">
   test2
   <br>
   <table align="center" cellpadding="0" cellspacing="0" border='1' width="100%">
      <tr><td onclick="OnClickCell(event)">
         test3
      </td></tr>
   </table>
</td></tr>
</table>



--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0491 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.