Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
 Аватар для BarsicPlus
11 / 11 / 2
Регистрация: 21.05.2014
Сообщений: 31

JavaScript обработчики событий

21.05.2014, 16:23. Показов 1389. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
У меня есть код на JavaScript, где при прохождении мышки над картинкой, меняется ее яркость. Но код работает только отдельно. Когда я его помещаю в цикл, как сейчас, то ничего не работает. В чем может быть проблема? Спасибо.

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var arr = new Array("chip-1", "chip-5", "chip-25", "chip-100");
 
for(var i = 0; i < arr.length; i++) {
    document.getElementById(arr[i]).onmouseover = MouseOver(i);
    document.getElementById(arr[i]).onmouseout = MouseOut(i);       
}
 
function MouseOver(index) {
    document.getElementById(arr[index]).setAttribute("style","-webkit-filter: brightness(" + 90 + "%)");
}
 
function MouseOut(index) {
    document.getElementById(arr[index]).setAttribute("style","-webkit-filter: brightness(" + 100 + "%)");
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.05.2014, 16:23
Ответы с готовыми решениями:

Обработчики событий в JS
Добрый вечер. Появился вопрос. Есть такой HTML код. &lt;form action=&quot;#&quot; method=&quot;post&quot; class=&quot;search&quot;&gt; &lt;input...

Обработчики событий
Доброго времени суток! Друзья, помогите новичку разобраться. Вопрос такой: через циклы на страницу добавляются 2 набора кнопок. Не могу...

Class и обработчики событий
Доброго времени суток. Кто нибудь, когда нибудь, ложил обработчик события в класс, так делается вообще? В функции ложим, так-то...

3
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
21.05.2014, 16:48
Лучший ответ Сообщение было отмечено BarsicPlus как решение

Решение

вместо всего вашего кода напишите так:
JavaScript
1
2
3
4
var arr = new Array ('chip-1', 'chip-5', 'chip-25', 'chip-100');
for (var i = 0; i < arr.length; i++) with (document.getElementById (arr [i]))
   onmouseover = function () {this.style ['-webkit-filter'] = 'brightness(90%)'},
   onmouseout = function () {this.style ['-webkit-filter'] = 'brightness(100%)'};
объясню кратко
назначать можно:
-- либо только имя функции (без каких либо параметров в круглых скобках)
-- либо определять новую функцию (и тогда можно воспользоваться в контексте объектом this)

вот второй способ я вам и порекомендую
--------------

и ещё: назначать идентификаторы, в значении которых есть символ минуса - это не просто плохой тон, но и нарушение внутренней работы браузера

поясню примером
браузер, встретив любой тег с id, автоматически создаёт переменную, имя которой равно этому id
запустите в любом браузере - и увидите в окошке приветствие:
HTML5
1
2
3
<body onload="alert (abcdef1234.innerHTML)">
<span id="abcdef1234">Hello!</span>
</body>
а теперь запустите другой код - с "дефектным" id вроде вашего
и окошка не увидите, а в "Консоли ошибок" прочитаете, что переменная chip не определена
HTML5
1
2
3
<body onload="alert (chip-1.innerHTML)">
<span id="chip-1">Hello!</span>
</body>
1
 Аватар для vovandr
636 / 523 / 195
Регистрация: 19.08.2013
Сообщений: 1,400
21.05.2014, 21:15
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var arr = new Array("chip-1", "chip-5", "chip-25", "chip-100");
 
    for(var i = 0; i < arr.length; i++) {
        document.getElementById(arr[i]).onmouseover = MouseOver(i);
        document.getElementById(arr[i]).onmouseout = MouseOut(i);       
    }
     
    function MouseOver(index) {
       return function(){
        document.getElementById(arr[index]).setAttribute("style","-webkit-filter: brightness(" + 90 + "%)");
      }
    }
     
    function MouseOut(index) {
       return function(){
        document.getElementById(arr[index]).setAttribute("style","-webkit-filter: brightness(" + 100 + "%)");
      }
    }
Добавлено через 1 минуту
1
 Аватар для BarsicPlus
11 / 11 / 2
Регистрация: 21.05.2014
Сообщений: 31
21.05.2014, 21:34  [ТС]
kalabuni, Большое Спасибо. Все работает.
Еще раз большое спасибо, за детальное объяснение.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.05.2014, 21:34
Помогаю со студенческими работами здесь

объясните про обработчики событий
подскажите, в чём разница между следующими инструкциями: element.addEventListener(&quot;click&quot;,...

Можно ли объявлять общий обработчики событий?
Собственно вопрос находится в названии темы. Вот код: &lt;input type=&quot;text&quot; id=&quot;text&quot;&gt;&lt;h3 id=&quot;code&quot;&gt;&lt;/h3&gt; var...

Повесить обработчики событий на массив элементов
var headers=document.querySelectorAll(&quot;thead tr th&quot;); for(var i=0;i&lt;headers.length;i++) (function(){ ...

Как удалить обработчики событий с элемента?
Обработчик установлен, например, так: &lt;a id=&quot;font&quot; href=&quot;#&quot; onclick=&quot;f(); return(false)&quot;&gt;Ссылка&lt;/a&gt; Пытаюсь удалить его: ...

Напишите функции-обработчики для следующих событий: onDblclick
onDblclick При двойном щелчке мыши по картинке она должна увеличиваться в размерах


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru