Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.01.2013, 10:53
Профессор
Отправить личное сообщение для hoax Посмотреть профиль Найти все сообщения от hoax
 
Регистрация: 20.09.2012
Сообщений: 151

Давно не могу понять
вот у нас код


http://learn.javascript.ru/play/tuto...gua/index.html

Там есть вот это

function highlight(node) {
  if (highlightedCell) {
    highlightedCell.style.backgroundColor = '';
  }
  highlightedCell = node;
  node.style.backgroundColor = 'red';
}


Скрипт же читается сверху вниз, а тут у нас вначале идет

if (highlightedCell)

НО highlightedCell на данном этапе всего лишь переменаая, я не понимаю почему, она действует как td, ведь td она становится после if

highlightedCell = node;



Т.е. если сделать так, работать не будет


function highlight(node) {
 
  highlightedCell = node;
  node.style.backgroundColor = 'red';

 if (highlightedCell) {
    highlightedCell.style.backgroundColor = '';
  }


}


Как так?
Ответить с цитированием
  #2 (permalink)  
Старый 12.01.2013, 11:03
Профессор
Отправить личное сообщение для hoax Посмотреть профиль Найти все сообщения от hoax
 
Регистрация: 20.09.2012
Сообщений: 151

И как вопрос, почему при нажатии на тот же самый td (который уже красный), подсветка не спадает
Ответить с цитированием
  #3 (permalink)  
Старый 12.01.2013, 11:31
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

hoax, этот код
function highlight(node) {
 
  highlightedCell = node;
  node.style.backgroundColor = 'red';

 if (highlightedCell) {
    highlightedCell.style.backgroundColor = '';
  }


}

равен этому
function highlight(node) {
     node.style.backgroundColor = '';
}
Ответить с цитированием
  #4 (permalink)  
Старый 12.01.2013, 11:40
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

Сообщение от hoax
И как вопрос, почему при нажатии на тот же самый td (который уже красный), подсветка не спадает
Скрипт работает так: элемент нажатый в прошлый раз обесцветить, вновь нажатый подсветить красным.
Поэтому красным будет тот на который нажали в последний раз.
Ответить с цитированием
  #5 (permalink)  
Старый 12.01.2013, 16:53
Профессор
Отправить личное сообщение для hoax Посмотреть профиль Найти все сообщения от hoax
 
Регистрация: 20.09.2012
Сообщений: 151

Я понимаю что равен этому

function highlight(node) {
node.style.backgroundColor = '';
}


Но почему это не работает хз.

Я понимаю это так

Когда скрип дойдет до == 'TD' вызовет ф-ю highlight(клик)

function highlight(node) {
 
 if (highlightedCell) { // Если (ПУСТАЯ переменная существует) 
    highlightedCell.style.backgroundColor = ''; // выводим стандартный цвет
  } 

 highlightedCell = node; // копируем TD в переменную, и тут БУМ! Она становится TD!
  node.style.backgroundColor = 'red'; // тут TD окрашивается в красный при клике




}



Т.е. то что после if понятно, там где происходит копирование, до него - нет((
Ответить с цитированием
  #6 (permalink)  
Старый 13.01.2013, 00:51
Профессор
Отправить личное сообщение для hoax Посмотреть профиль Найти все сообщения от hoax
 
Регистрация: 20.09.2012
Сообщений: 151

Так что же в ней находится?)

var highlightedCell;

if (highlightedCell) {.....}

Как именно это понять? Она же не копирует ничего. Там ничего нет, всмысле не строки , не числового порядки и не логических значений.

Здесь не происходит копирование TD в эту переменную (копирование позже), тогда каким образом она работает, если она НЕ ПРИВЯЗАНА ни к чему.


Ну как-то так, моя извращенная логика)
Ответить с цитированием
  #7 (permalink)  
Старый 13.01.2013, 01:11
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от hoax
Так что же в ней находится?)
1. отладчик для чего придумали?

2. в ней находится ссылка на предыдущую ячейку
Сообщение от рони
Скрипт работает так: элемент нажатый в прошлый раз обесцветить, вновь нажатый подсветить красным.
сколько еще раз об этом сказать?

тыкаем 2 и более раз по ячейкам
http://learn.javascript.ru/play/uDkZU
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук

Последний раз редактировалось nerv_, 13.01.2013 в 01:14.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не могу понять принцип всего скрипта sonniksonnik Общие вопросы Javascript 11 19.11.2013 16:36
Наболевший this. Не могу понять Harvey Общие вопросы Javascript 6 19.08.2011 17:30
Не могу понять, почему не работает автокомпил в IE 8 gargon2008 jQuery 0 07.06.2011 11:31
RegExp - поиск в найденном. Не могу понять senseysensor Общие вопросы Javascript 9 17.10.2010 21:55
не могу понять в чём ошибка scuter Общие вопросы Javascript 2 28.08.2008 15:22