Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.11.2018, 10:46
Аватар для Nlk
Nlk Nlk вне форума
Кандидат Javascript-наук
Отправить личное сообщение для Nlk Посмотреть профиль Найти все сообщения от Nlk
 
Регистрация: 25.12.2016
Сообщений: 146

Всплытие и перехват события
Здравствуйте!

Скажите пожалуйста, как данную конструкцию можно переписать, как на проверку содержания определенного класса а не тэга?
Спасибо

/* нужно
if (event.target.classList.contains('class')) {
*/

table.onclick = function(event) {
  var target = event.target;
  while (target != table) {
    if (target.tagName == 'TD') {
      highlight(target);
      return;
    }
  }
}
Ответить с цитированием
  #2 (permalink)  
Старый 09.11.2018, 10:55
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

table.onclick = function(event) {
  var target = event.target;
  while (target != table) {
    if (target.classList.contains('class')) {
      highlight(target);
      return;
    }
  }
};

что сложного?
Ответить с цитированием
  #3 (permalink)  
Старый 09.11.2018, 11:25
Аватар для Nlk
Nlk Nlk вне форума
Кандидат Javascript-наук
Отправить личное сообщение для Nlk Посмотреть профиль Найти все сообщения от Nlk
 
Регистрация: 25.12.2016
Сообщений: 146

j0hnik,
Супер, спасибо большое
Ответить с цитированием
  #4 (permalink)  
Старый 09.11.2018, 13:44
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

а почему цикл не бесконечный?
Ответить с цитированием
  #5 (permalink)  
Старый 09.11.2018, 13:45
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Сообщение от рони
а почему цикл не бесконечный?
видимо highlight(target);
Ответить с цитированием
  #6 (permalink)  
Старый 09.11.2018, 13:47
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

Сообщение от j0hnik
видимо highlight(target);
???
Ответить с цитированием
  #7 (permalink)  
Старый 09.11.2018, 13:50
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

либо цикл не нужен, либо нужно добавить target = target.parentNode
Ответить с цитированием
  #8 (permalink)  
Старый 09.11.2018, 14:24
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

<div id="table">
	<div class="cl xxx">
		<div class="cl">нажми</div>
	</div>
</div>

	<script>

function highlight(el){
el.parentNode.click();
}

table.onclick = function(event) {
  var target = event.target;
  console.log(target);
  while (target != table){
    if (target.classList.contains('cl')) {
      highlight(target);
      return;
    }
  }
};
</script>


это конечно полная хрень, но highlight может обойти до table
Ответить с цитированием
  #9 (permalink)  
Старый 09.11.2018, 14:29
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Сообщение от рони
а почему цикл не бесконечный?
Проблема, наверное, в том что он бесконечный
Без цикла
<table class="class">
   <tr>
        <td>0</td><td class="class">1</td><td>0</td><td class="class">2</td>
   </tr>
   <tr>
        <td>0</td><td class="class">3</td><td>0</td><td class="class">4</td>
   </tr>
</table>
<script>
function highlight(item) {
   item.style.backgroundColor = "lightgreen";
}
var table = document.querySelector('table');
table.onclick = function(event) {
  var target = event.target;
  if (target != table && target.classList.contains('class')) {
      highlight(target);
  }
};
</script>

Проверка target != table имеет смысл только если и у table есть class="class"

Последний раз редактировалось Dilettante_Pro, 09.11.2018 в 14:36.
Ответить с цитированием
  #10 (permalink)  
Старый 09.11.2018, 14:37
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

Dilettante_Pro,
цикл с
Сообщение от рони
target = target.parentNode
надёжнее
<td class="class"><span>00000000000000</span></td>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перехват события клика ruzik jQuery 2 20.07.2014 21:24
Перехват события onclick maternik Общие вопросы Javascript 7 01.04.2014 18:03
перехват события onscroll simple Events/DOM/Window 0 29.02.2012 10:57
Перехват родительского события bobr13 jQuery 3 13.09.2011 02:18
Перехват события voice8787 Events/DOM/Window 1 07.03.2011 21:30