2012-09-24 9 views
0

Есть ли что-то не так с этим кодом, например, не присваивать права или что-то еще? Все ссылочные идентификаторы существуют, консоль регистрирует его, но назначается только topbar.cw. Я думаю, что это может быть назначено и в другом месте, не уверен. Кроме того, я даже не уверен, что это такое. Является ли это массивом, классом или конструкцией или что?Невозможно назначить элементы в Javascript

var topbar = {}; 
if(document.readyState == 'complete'){ 
topbar.cw=document.getElementById('contentWrapper'); 
topbar.tb=document.getElementById('topbar'); 
topbar.hd=document.getElementById('header'); 
topbar.sm=document.getElementById('storyMenu'); 
topbar.dd=document.getElementById('dropdown'); 
topbar.bc=document.getElementById('bodyContent'); 
topbar.sb=document.getElementById('sidebar'); 
topbar.mm=document.getElementById('mainMenu'); 
topbar.da=document.getElementById('displayArea'); 
console.log("fired when done loading"); 
} 
+0

Возможно, document.readyState не равен 'complete' - вам нужно вставить больше кода. – chovy

+0

Что такое 'console.log (topbar),' give? – Eric

+0

На многие ваши вопросы можно ответить, используя отладчик браузеров. Нажмите F12 в большинстве современных браузеров, чтобы запустить его, и попробуйте выполнить свой код, чтобы узнать, что происходит, когда и какой его выход. – Matt

ответ

0

В коде:

> var topbar = {}; 

Назначает новый объект topbar

> if(document.readyState == 'complete') { 

Если значение document.readyState эквивалентна строке 'полное', то:

>  topbar.cw = document.getElementById('contentWrapper'); 

Присвоить результат вызова RHS объекту cwtopbar. Если такое свойство не существует, оно создается.

Если есть и элемент с идентификатором contentWrapper, укажите ссылку на cw. Если не существует элемента с идентификатором contentWrapper, то будет присвоено значение null, так как это то, что указано document.getElementById, если он не может найти соответствующий элемент.

> topbar.tb = document.getElementById('topbar'); 
> ... 
> console.log("fired when done loading"); 

Является ли приведенное выше сообщение когда-либо отображаемым в консоли? Вы пробовали:

console.log(topbar); 

Если нет, попробуйте. Сообщите, что вы видите.

+0

Да, отображается. –

+0

Затем все свойства должны быть назначены и должны либо ссылаться на элементы DOM, либо быть установлены в «null». Обратите внимание, что если свойства не существуют, попытка доступа к ним вернет 'undefined', а не' null'. – RobG

+0

Да, они имеют значение null. Я должен обновить свой вопрос, это моя проблема. Я нашел обходное решение, и поскольку это tiddlywiki, это не общий html-ответ. Вы ответили на мой вопрос, что на самом деле делает код. –

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