Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: JavaScript  (Прочитано 778 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Atilla

  • Автор темы
  • Участник
  • *
  • Сообщений: 196
    • Просмотр профиля
JavaScript
« : 28 Июнь 2009, 18:48:00 »
document.getElementById('image').onclick=click ();
function click () {alert('Click!');}
.......
<img src="image.jpg" id="image" />
.......
По хорошему сообщение должно выводится при щелчке по изображению. Но сообщение выходит при загрузке страницы, а при щелчке ничего нет. В чем дело?

Еще вопрос.
Вызывается функция. Во время работы первой вызывается та же самая функция. Получается каша со значениями переменных. Можно ли сделать так, чтобы у каждого дубликата переменные были отдельно?

И еще.
Как узнать запущен или нет процесс fade=setInterval(move, 100); ?
« Последнее редактирование: 28 Июнь 2009, 21:52:59 от Atilla »

Оффлайн Shecspi

  • Активист
  • *
  • Сообщений: 386
  • Launch Hip-Hop
    • Просмотр профиля
    • PHP-GTK по-русски
Re: JavaScript
« Ответ #1 : 28 Июнь 2009, 19:29:54 »
<img src="gmail-logo.jpg" onclick='alert("Hello. I am image!")'/>

Оффлайн Atilla

  • Автор темы
  • Участник
  • *
  • Сообщений: 196
    • Просмотр профиля
Re: JavaScript
« Ответ #2 : 28 Июнь 2009, 20:58:38 »
В том-то и вся проблема, что xhtml'у не правится ссылки на события в html. Надо их вынести. А как?

Оффлайн unimix

  • Активист
  • *
  • Сообщений: 537
    • Просмотр профиля
Re: JavaScript
« Ответ #3 : 28 Июнь 2009, 21:22:29 »
<img src="fire_100x100.png" id="image" />

<script type="text/javascript">
document.getElementById('image').onclick = function click ()
{
alert('Click!');
}
</script>

Метод "document.getElementById('image')" не вернет объект, если объект не определен до его вызова (не был создан). Поэтому, у ненайденного объекта не могут быть события, к которым можно привязать функцию. Вывод: сначала должен быть создан объект, потом уже вызывать метод  "document.getElementById('image')", который его найдет.

Оффлайн Atilla

  • Автор темы
  • Участник
  • *
  • Сообщений: 196
    • Просмотр профиля
Re: JavaScript
« Ответ #4 : 28 Июнь 2009, 21:29:42 »
Тогда можно вызывать document.getElementById('image').onclick=click (); через onload наверно.

Оффлайн unimix

  • Активист
  • *
  • Сообщений: 537
    • Просмотр профиля
Re: JavaScript
« Ответ #5 : 28 Июнь 2009, 21:54:45 »
document.getElementById('image').onclick=click ();

Здесь ты на событие "onclick" вешаешь не функцию "click", а то, что она вернет. Чтобы функции "click" что-нибудь вернула, она должна выполниться. Но функция "click" у тебя ничего не возвращает, а лишь вызывает "alert". Если хочется что-нибудь в твоем духе то вот:
var event_click = function click ()
{
alert('Click!');
}
document.getElementById('image').onclick = event_click;

Далее, на "onload" лучше (но не обязательно) вешать вызов какой-нибудь функции, которая и сделает все необходимые операции при загрузке. Например:

<html>
<head>
<script type="text/javascript">
var event_click = function click ()
{
alert('Click!');
}
function onLoadFunction()
{
document.getElementById('image').onclick = event_click;
}
</script>
</head>
<body onLoad="onLoadFunction()">
<img src="fire_100x100.png" id="image" />
</body>
</html>

Оффлайн Atilla

  • Автор темы
  • Участник
  • *
  • Сообщений: 196
    • Просмотр профиля
Re: JavaScript
« Ответ #6 : 28 Июнь 2009, 22:55:52 »
unimix, ещё одно. Допустим есть блок <div id='scroll'> внутри него есть изображения. Как вызвать определенную функцию по наведению мыши на изображении и узнать номер его childNodes, не вставляя в каждое изображение onMouseOver?
« Последнее редактирование: 28 Июнь 2009, 23:00:19 от Atilla »

Оффлайн unimix

  • Активист
  • *
  • Сообщений: 537
    • Просмотр профиля
Re: JavaScript
« Ответ #7 : 29 Июнь 2009, 00:53:40 »
Во-первых -- не совсем понятно, что в выражении "узнать номер его childNodes"  означает слово "номер".

Во вторых -- чтобы решать такие вопросы необходимо иметь представление об объектах, что они собой представляют, что можно с ними делать и что такое "this" . Также советую при такой работе с JavaScript изучить DOM. В общем, -- RTFM.

Оффлайн Atilla

  • Автор темы
  • Участник
  • *
  • Сообщений: 196
    • Просмотр профиля
Re: JavaScript
« Ответ #8 : 29 Июнь 2009, 12:15:55 »
Одним словом надо купить хороший учебник.

 

Страница сгенерирована за 0.06 секунд. Запросов: 24.