Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.03.2015, 21:22
Аватар для JsConAp
Интересующийся
Отправить личное сообщение для JsConAp Посмотреть профиль Найти все сообщения от JsConAp
 
Регистрация: 22.02.2015
Сообщений: 24

«Ба Гуа» :D
Всем привет.
Начал изучать события,дошел до главы про делегирование.
Есть следующий код http://learn.javascript.ru/play/tuto...gua/index.html
объясните пожалуйста для чего нужна 52 строка?Никак не могу въехать что она делает?Без нее вроде тоже работает??
Ответить с цитированием
  #2 (permalink)  
Старый 08.03.2015, 21:44
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от JsConAp
Всем привет.
Начал изучать события,дошел до главы про делегирование.
Есть следующий код http://learn.javascript.ru/play/tuto...gua/index.html
объясните пожалуйста для чего нужна 52 строка?Никак не могу въехать что она делает?Без нее вроде тоже работает??
не нужна, также как и while

<style>
#bagua-table th {
	text-align:center;
	font-weight:bold;	
}

#bagua-table td {
	width: 150px;
	white-space: nowrap;
	text-align:center;
	vertical-align: bottom;
	padding-top: 5px;
	padding-bottom: 12px;
}

#bagua-table .nw {
	background-color: #999;
}

#bagua-table .n {
	background-color: #03f;
	color: #fff;
}

#bagua-table .ne {
	background-color: #ff6;
}

#bagua-table .w {
	background-color: #ff0;
}
#bagua-table .c {
	background-color: #60c;
	color: #fff;
}
#bagua-table .e {
	background-color: #09f;
	color: #fff;
}

#bagua-table .sw {
	background-color: #963;
	color: #fff;
}

#bagua-table .s {
	background-color: #f60;
	color: #fff;
}
#bagua-table .se {
	background-color: #0c3;
	color: #fff;
}
</style>

<table id="bagua-table">
  <tr>
    <th colspan="3"><em>Bagua</em> Chart: Direction, Element, Color, Meaning</th>
  </tr>
  <tr>
    <td class="nw"><strong>Northwest</strong><br>Metal<br>Silver<br>Elders
    </td>
    <td class="n"><strong>North</strong><br>Water<br>Blue<br>Change
    </td>
    <td class="ne"><strong>Northeast</strong><br>Earth<br>Yellow<br>Direction
    </td>
  </tr>
  <tr>  
      <td class="w"><strong>West</strong><br>Metal<br>Gold<br>Youth
    </td>
    <td class="c"><strong>Center</strong><br>All<br>Purple<br>Harmony
    </td>
    <td class="e"><strong>East</strong><br>Wood<br>Blue<br>Future
    </td>
  </tr>
  <tr>  
      <td class="sw"><strong>Southwest</strong><br>Earth<br>Brown<br>Tranquility
    </td>
    <td class="s"><strong>South</strong><br>Fire<br>Orange<br>Fame
    </td>
    <td class="se"><strong>Southeast</strong><br>Wood<br>Green<br>Romance
    </td>
  </tr>
  
</table>

<script>
document.addEventListener("DOMContentLoaded", function () {
	var highlightedCell;
	document.getElementById('bagua-table').addEventListener("click", function (event) {
		var target = event.target;
		if ( target.nodeName == "TD" && highlightedCell != target) {
			target.style.background = "red";
			if ( highlightedCell ) {
				highlightedCell.style.background = "";
			}
			highlightedCell = target;
		}
	});
});
</script>

Последний раз редактировалось bes, 08.03.2015 в 21:50.
Ответить с цитированием
  #3 (permalink)  
Старый 08.03.2015, 21:51
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

обновил, добавив условие
&& highlightedCell != target

чтобы при повторном клике ячейка оставалась красной, вероятно, для этого там всё это и было
Ответить с цитированием
  #4 (permalink)  
Старый 08.03.2015, 21:58
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

JsConAp,
bes,
добавьте в ячейку картинку и добейтесь того же самого при клике на картинку без этой строки
Ответить с цитированием
  #5 (permalink)  
Старый 08.03.2015, 22:04
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от рони
JsConAp,
bes,
добавьте в ячейку картинку и добейтесь того же самого при клике на картинку без этой строки
да, ты прав
Ответить с цитированием
  #6 (permalink)  
Старый 08.03.2015, 22:43
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

JsConAp,
цикл while проверяет является кликнутый элемент ячейкой или находится в ячейке (его пра пра ...предок ячейка)JsConAp,
Ответить с цитированием
  #7 (permalink)  
Старый 08.03.2015, 23:20
Аватар для JsConAp
Интересующийся
Отправить личное сообщение для JsConAp Посмотреть профиль Найти все сообщения от JsConAp
 
Регистрация: 22.02.2015
Сообщений: 24

Сообщение от рони Посмотреть сообщение
JsConAp,
цикл while проверяет является кликнутый элемент ячейкой или находится в ячейке (его пра пра ...предок ячейка)JsConAp,
А для чего нужна 52 строка?
target = target.parentNode;

Последний раз редактировалось JsConAp, 08.04.2015 в 19:34.
Ответить с цитированием
  #8 (permalink)  
Старый 08.03.2015, 23:25
Аватар для JsConAp
Интересующийся
Отправить личное сообщение для JsConAp Посмотреть профиль Найти все сообщения от JsConAp
 
Регистрация: 22.02.2015
Сообщений: 24

и почему если его убрать и нажимать на strong,то начинается зависание?

Последний раз редактировалось JsConAp, 08.04.2015 в 19:23.
Ответить с цитированием
  #9 (permalink)  
Старый 08.03.2015, 23:28
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

JsConAp,
Ответить с цитированием
  #10 (permalink)  
Старый 09.03.2015, 04:12
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

JsConAp, задача определить элемент источник события, для этого и перебирается дерево родителей, самым верхним который будет TABLE. А чтобы проверить всех родителей следующей итерации цикла присваивается следующий родитель:

target = target.parentNode
Ответить с цитированием
Ответ



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

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