Почему не срабатывает событие onClick?
В WorkItem элементах прописывается onClick= >, но по какой-то причине событие не срабатывает, из-за чего это может быть?
P.S. Проверил чтобы поверх элемента не было других элементов, т.е. клику по элементу ничего не мешает.
import React from 'react'; import ReactCSSTransitionGroup from 'react-addons-css-transition-group'; import WorkItem from '../WorkItem'; class PortfolioSectionPanel extends React.Component < constructor() < super(); >render() < //Расположение кругов let workItems; if(this.state.showWorks) < let = this.state; const angleRad = 360 / works.length * 0.017; //Частота кругов в радианах const bg = document.getElementById('portfolio-panel-disk'); let radius; if(bg) < radius = parseInt(getComputedStyle(bg).width) / 2; >workItems = works.map((currentValue, index) => < return > type= link= key= leftOffset= topOffset= angle= /> >) > else < workItems = null; >let diskStyle = < transform: `translate(-50%,-50%) rotate($deg)`, >; return( > onTransitionEnd= > > transitionName='portfolio-panel__information' transitionEnterTimeout= transitionLeaveTimeout=> className='portfolio-panel-disk' > transitionName='work-item' transitionEnterTimeout= transitionLeaveTimeout=> ) > > export default PortfolioSectionPanel;
Простой 1 комментарий
Помощь по js, не работает клик, как побороть?
Клик по ссылке в коде ничего не дает, имею ввиду не переходит на сайт, что нужно дописать чтобы работало?
Оценить 8 комментариев
JoraMajora61:
он открывается и сразу закрывается.
во втором блоке кода нужно проверять откуда пришел клик. Если из этого вашего блока — то не нужно делать hide, в противном случае клик был вне блока и можно закрыть. А return false убрать в первом блоке.
Рекомендую посмотреть существующие реализации подобных элементов и писать наподобие.
Сергей: Сергей, это выглядит так, вот начальное состояние prntscr.com/g8wlr6 , а вот когда кликаем по кнопке i — prntscr.com/g8wm1a
Клик на свободную область закрывает этот попапчик маленький
JoraMajora61: я и так представляю как это выглядит )
а вы похоже не понимаете о чем я толкую.
$('.js-i').on('click', function () < $('.js-i__text').show(); >); $(document).on('click', function (e) < var $target = $(e.target); if ($target.hasClass('js-i') || $target.parents('js-i').length >0) < $('.js-i__text').hide(); >>);
На худой конец, ловите клик на самой кнопке
Не работает событие onclick
Вот простенький код. Пытаюсь повесить событие на элемент массива (при нажатии выводит Hello). Выдаёт ошибку. Как правильно вешать события на определённый элемент массива ? Данный пример взял с видео уроков по которым учусь.
Событие onClick
Передо мной стоит задача, суть которой заключается в том, чтобы при нажатии на ссылку в левом.
Событие onclick для кнопки
Есть ссылка с id "click21", на нее нужно повесить js функцию с событием onclick jivo_api.open();.
Почему событие onClick не срабатывает ?
В книге говорится что событие onClick срабатывает при нажатии на кнопке мыши. Но у меня ничего не.
Правильная установка кода на событие onclick
Всем добрый день, уважаемые форумчане! На сайте стоит оформление заказа в один клик. Оптимизатор.
Сообщение от Юрий 1989
1 2 3 4 5 6 7 8 9 10 11 12 13 14
html> head> title>Работаем с переменными/title> script src="1.js">/script> /head> body> p>Item 1/p> p>Item 2/p> p>Item 3/p> p>Item 4/p> p>Item 5/p> /body> /html>
Сообщение было отмечено Юрий 1989 как решение
Решение
Подключите скрипт перед закрывающим тегом body, либо сделайте так,что-бы код запускался после построения DOM
Спасибо помогло. Подключил скрипт перед закрывающим тегом body.
Добавлено через 2 минуты
Или можно было указать в подключении defer. Совсем из головы вылетело.
Смотрите какое дело: грубо говоря, браузер «читает» документ сверху вниз и исполняет javascript по мере прочтения, то есть в вашем примере
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
html> head> title>Работаем с переменнымиtitle> script type="text/javascript"> var p = document.getElementsByTagName('p'); console.log(p); p[0].onclick = f1; function f1 () { alert('Hello'); } script> head> body> p>Item 1p> p>Item 2p> p>Item 3p> p>Item 4p> p>Item 5p> body> html>
на момент исполнения скрипта p — будет пустая коллекция.
Возникает вопрос: почему в консоли вы видите массив из пяти элементов? Потому что метод getElementsByTagName() возвращает HTMLCollection, а у этой коллекции есть один нюанс — она т. н. «live» (живая), то есть изменяется по мере изменения документа. Такое поведение может привести к неожиданным результатам:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
html> head> title>Работаем с переменнымиtitle> head> body> p>Item 1p> p>Item 2p> p>Item 3p> p>Item 4p> p>Item 5p> script type="text/javascript"> var p = document.getElementsByTagName('p'); for (var i = 0; i p.length; i++) { var newP = document.createElement('p'); newP.textContent = 'New Item ' + i; document.body.appendChild(newP); if (i > 50) { alert('Горшочек не вари!'); break; } } script> body> html>
Но что же делать вам?
Поместите скрипт в конец документа, перед закрывающим тегом