2014-11-11 5 views
0

Я получаю это сообщение об ошибке в своем Javascript.Javascript - getElementByID - Ошибка

Невозможно получить свойство «стиль» неопределенной или нулевой ссылки

document.getElementById('BS2').style.display='block'; 

Что происходит на нем, что иногда элемент ID не отображается. Есть ли способ проверить, есть ли элемент, затем сделать это еще, перейти к следующей строке кода?

function showb() { 
    if(document.getElementById('BS1').style.display=='none') { 
     document.getElementById('BS1').style.display='block'; 
     document.getElementById('BS2').style.display='block'; 
     document.getElementById('BS3').style.display='block'; 
     document.getElementById('BS4').style.display='block'; 
    } 
    return false; 
} 

Иногда BS1 показывает, BS3 показывает и BS4 ... и т.д.

+0

Не можете ли вы просто проверить возвращаемое значение 'getElementById()' и продолжать, если оно не 'null'? – Pointy

+0

Ваш DOM еще не загружен. Попробуйте положить JS-код в нижней части тела. – volter9

+0

Как я мог это сделать? Можете ли вы сделать пример для меня? – mrmcg

ответ

0

document.getElementById() возвращает объект, как и все остальное. Вы можете присвоить его переменной и проверить нуль-ность переменной:

var bs1 = document.getElementById('BS1'); 

if (bs1) { 
    .. do stuff if bs1 is present 
} else { 
    .. do stuff if bs1 is not there 
} 
0

AS заостренными сказал в своем комментарии, вы должны chekc есть ли элемент с нужным ID, прежде чем пытаться прочитать его свойства. Вы можете использовать кусок кода, как это:

var element = document.getElementById('BS2'); // or any other ID 
if (element) { // if no element is found, this evaluates as a logical false. 
    element.style.display='block'; 
} 

Получение элемента в переменном также имеет то преимущество, что ваш код становится более читаемым. И поскольку вы используете это несколько раз, вы можете создать функцию для инкапсуляции этой логики. Удачи!

0

Ну, если свойство стиля не был изменен это означает, что это просто («»)

function showb() { if(document.getElementById('BS1').style.display) { document.getElementById('BS1').style.display='block'; document.getElementById('BS2').style.display='block'; document.getElementById('BS3').style.display='block'; document.getElementById('BS4').style.display='block'; } return false; } она будет решена просто так, потому что («») является falsy значение

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