Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: В Opera не работает функция

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Неправильное объявление переменной или что-то другое?
zusicks438
Отправлено: 29 Августа, 2012 - 13:34:05
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Авг. 2012  


Помог: 0 раз(а)




Всем доброго времени суток.

Собственно, есть кучка картинок. При нажатии на одну из картинок передаем в функцию URL видео и собственно сам объект (через this). При этом функция вставляет URL в блок "video", а рамка у родительского элемента (структура такая: <li><img></li>, то есть рамка у li) меняется с зеленой на красную. Если тыкаем по другой картинке, то рамка у прошлой картинки снова становится зеленой, а у новой - красной.

Проблема как раз в смене цвета рамки. Вот код функции:
CODE (javascript):
скопировать код в буфер обмена
  1. <script>
  2.         function replace(code, idnt) {
  3.         video.innerHTML=code;
  4.         if (parent)
  5.         parent.className = "green";
  6.         var actual = document.getElementById(idnt.id);
  7.         parent = actual.parentNode;
  8.         parent.className = "red";
  9.         }
  10. </script>
  11. <script>
  12.         var parent;
  13. </script>

В результате все замечательно работает в IE и Firefox, а вот в Opera цвет рамки не меняется. При этом если мне нужно просто сделать красную рамку, то вот такой код работает:
CODE (javascript):
скопировать код в буфер обмена
  1. <script>
  2.         function replace(code, idnt) {
  3.         video.innerHTML=code;
  4.         var actual = document.getElementById(idnt.id);
  5.         var parent = actual.parentNode;
  6.         parent.className = "red";
  7.         }
  8. </script>


Я не пойму никак...то ли Opera как-то иначе работает с глобальными переменными, то ли я просто чего-то не знаю. Пожалуйста, помогите Улыбка
 
 Top
IllusionMH
Отправлено: 29 Августа, 2012 - 13:43:59
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




zusicks438, и где эта переменная должна задаваться, чтобы условие сработало?
ссылку на пример
 
 Top
zusicks438
Отправлено: 29 Августа, 2012 - 13:57:21
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Авг. 2012  


Помог: 0 раз(а)




IllusionMH пишет:
и где эта переменная должна задаваться, чтобы условие сработало

CODE (javascript):
скопировать код в буфер обмена
  1. parent = actual.parentNode;

Так вот же. Условие истинно всегда, кроме первого раза. В принципе если в объявлении parent что-нибудь присвоить, то можно вообще без этого условия.

Суть еще и в том, что если переменная глобальная, то в Opera не работает даже вот это:
CODE (javascript):
скопировать код в буфер обмена
  1. parent = actual.parentNode;
  2.         parent.className = "red";

Хотя если сделать локальную, то все работает:
CODE (javascript):
скопировать код в буфер обмена
  1. var parent = actual.parentNode;
  2.         parent.className = "red";
 
 Top
tuareg
Отправлено: 29 Августа, 2012 - 14:19:19
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




zusicks438 Мне нравится, Вас просят ссылку, Вы выкладываете код. Поймите правильно, Вы выложили js код, но м.б косяк и в HTML нужен именно пример Улыбка
 
 Top
zusicks438
Отправлено: 29 Августа, 2012 - 14:23:58
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Авг. 2012  


Помог: 0 раз(а)




tuareg,
да я понимаю, не самая правильная реакция на просьбу, но надеялся, что все же получится обойтись кодом,
но до меня тут методом тыка дошло, в чем дело. Судя по всему Opera уже где-то использует переменную "parent" в служебных целях. Поменял название переменной на "vparent" и все заработало Улыбка
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB