Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.01.2015, 13:50
Новичок на форуме
Отправить личное сообщение для Ымя Посмотреть профиль Найти все сообщения от Ымя
 
Регистрация: 25.01.2015
Сообщений: 3

Неожидаемый вывод в console.log объекта html
Всем привет.
Обнаружил следующую странность при выводе объекта в консоль (проверял в FF35.0 и Chrome 40.0.2214.91 m).
На странице html есть элемент:
<div id="test" class="first">Тест</div>

Если выполнять следующий js-код:
var tt = document.getElementById('test');
console.log('Тест: %s', tt.className);
console.log('Тест: %o', tt);
tt.className = 'second';
console.log('Тест: %s', tt.className);
console.log('Тест: %o', tt);

то в консоле получаем :
"Тест: first"
"Тест: " <div class="second" id="test"> 
"Тест: second"
"Тест: " <div class="second" id="test">

Возникает вопрос: каким образом в консоль выводится
"Тест: " <div class="second" id="test">
с значением параметра class="second", если замена значения этого параметра происходит после вывода в консоль?

При этом, если выполнять ранее указанный js-код в отладчике пошагово или с задержкой перед сменой значения параметра, например, используя alert
var tt = document.getElementById('test');
	console.log('Тест: %s', tt.className);
	console.log('Тест: %o', tt);
	alert('ok');
	tt.className = 'second';
	console.log('Тест: %s', tt.className);
	console.log('Тест: %o', tt);

то в консоли получаем ожидаемый (правильный) результат:
"Тест: first"
"Тест: " <div class="first" id="test">
"Тест: second"
"Тест: " <div class="second" id="test">


В чем может быть проблема?
Ответить с цитированием
  #2 (permalink)  
Старый 25.01.2015, 16:46
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Забей.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #3 (permalink)  
Старый 25.01.2015, 17:04
Профессор
Отправить личное сообщение для SV0L0CH Посмотреть профиль Найти все сообщения от SV0L0CH
 
Регистрация: 07.11.2010
Сообщений: 301

А мне вот больше ненравится что во втором варианте результат одинаков. Удобней было бы отлаживать когда объекты выведенные в консоль можно было бы рендерить повторно. Ато чтобы посмотреть изменения надо заново выводить объект в консоль.
Ответить с цитированием
  #4 (permalink)  
Старый 26.01.2015, 04:18
Аватар для Aetae
Любитель
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 5,417

Ымя, в консоль выводится текущий объект в реальном времени. Если что-то в нём поменялось - поменяется и в консоли. Еслиб было иначе - пришлось бы делать полный снимок состояния на момент вывода, что привело бы к нещадной утечке памяти.

Хочешь чтоб первый вариант работал как второй? Пожалуйста: перед выводом в ручную приводи к строке. То что - второй вообще работает - скорее баг отображения, вызванный, надо полагать, оптимизациями; ссылка же всё равно указывает на один и тот же объект, в окончательном его состоянии.
__________________
29375, 35

Последний раз редактировалось Aetae, 26.01.2015 в 04:36.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод выделенного текста с html в div alexbutav Общие вопросы Javascript 1 08.07.2013 03:23
смешивание объекта и html bdfy1 ExtJS 1 08.06.2013 01:01
html форма вывод из поля vinovachuk Элементы интерфейса 5 14.01.2013 02:24
Вывод текста из JS файла в атрибут div на html страничке. help Kreol Общие вопросы Javascript 11 15.12.2012 11:08
Вывод кусков HTML кода с одного файла JS wlad2 Общие вопросы Javascript 16 04.01.2011 10:52