2012-11-21 4 views
1

Я делаю ajax. В какой-то момент, я назначу someproperty к объекту DOM, выбранным идентификатором (предположим, это 12345), и я подтверждаю, что значение было назначено с помощью alert():Назначенное свойство отображается как undefined

window.document.getElementById('12345').someproperty = true; 
alert(window.document.getElementById('12345').someproperty); 

На данный момент, тревога правильно показывает true. Затем, в каком-то момент позже, я вызвать яваскрипт команды, которая смотрит вверх значение someproperty для объекта:

alert(window.document.getElementById('12345').someproperty); 

и на этот раз, он показывает undefined. Почему значение не определено?

+2

У меня такое ощущение, что вы делаете какой-то противный «.innerHTML» где-то между вашим поиском '.someproperty'. –

+3

Невозможно сказать, что вы показали. Можете ли вы создать [скрипку] (http://www.jsfiddle.net), чтобы продемонстрировать эту проблему. –

+0

@ user1689607 Это может быть так. Я изменил '.innerHTML'. Это влияет на свойства в некотором роде? – sawa

ответ

1

У меня такое ощущение, что вы делаете неприятный .innerHTML где-то между вашим поиском .someproperty.

Назначение .innerHTML уничтожает текущую DOM и заменяет ее новым DOM, который получается путем разбора строки HTML, которую вы предоставили. Поэтому я предполагаю, что вы уничтожили весь раздел и заменили его почти идентичным новым разделом. Это, естественно, уничтожает информацию о состоянии в исходном DOM.

Вы должны изменить отдельные элементы DOM, которые нуждаются в обновлении, а не полностью вычищать их, используя .innerHTML.

Смежные вопросы