Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   onClick работает по-разному (https://javascript.ru/forum/events/69631-onclick-rabotaet-po-raznomu.html)

trizna 07.07.2017 03:03

onClick работает по-разному
 
Дорогие друзья и коллеги!
Есть функция, которая после выполнения изменяет location окна.
Если сделать кнопку на <span> или <div> с событием onclick="Func('blabla');", то она работает.
Но если то же самое сделать на <input /> или <img /> - то не работает.
function wo(s) {location = "?s";}
// так работает:
document.write('<div onclick="wo(\'sub\');">Click</div>');
// и так тоже:
document.write('<span onclick="wo(\'sub\');">Click</span>');
// но если завернуть в тот же span или div картинку - не работает.
// И так тоже не работает:
document.write('<img src="image.png" onclick="wo(\'sub\');" />');
// и так не работает:
document.write('<input type="button" value="Click" onclick="wo(\'sub\');" />');

Давно пытаюсь понять, в чем дело, но так и не понял.
Но очень интересно узнать, что может мешать. :blink:

ksa 07.07.2017 09:40

trizna, я вставил твой текст на страничку... Запустил... Все клики сработали.

trizna 09.07.2017 14:18

Это понятно. Это я и сам сделал у себя на другой страничке.
Вопрос был: "что может мешать?"
Может быть, кто-то лучше знает теорию и понимает, что может блокировать действие по onClick на определенных элементах формы.

j0hnik 09.07.2017 16:00

Цитата:

Сообщение от trizna (Сообщение 458005)
Это понятно. Это я и сам сделал у себя на другой страничке.
Вопрос был: "что может мешать?"
Может быть, кто-то лучше знает теорию и понимает, что может блокировать действие по onClick на определенных элементах формы.

вариантов может быть много, чтобы вам помогли нужен конкретный пример, не гадание на кофейной гуще.

ksa 10.07.2017 09:48

Цитата:

Сообщение от trizna
что может блокировать действие по onClick на определенных элементах

Как уже написали выше - вариантов много...
Как вариант:
- обработчик удалили
- обработчик вылетает по ошибке
- элемент перекрыт другим элементом
- дочерний элемент останавливает всплытие события

Dilettante_Pro 10.07.2017 10:36

trizna,
Очень возможно, что на input и img есть другие обработчики, которые определяются позже и отменяют действие предыдущего


Часовой пояс GMT +3, время: 19:01.