Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Ошибки при отсутсвии элементов (https://javascript.ru/forum/dom-window/53109-oshibki-pri-otsutsvii-ehlementov.html)

soltx 21.01.2015 13:03

Ошибки при отсутсвии элементов
 
Привет! иногда возникают ошибки, например если вызвать карту google map и если отсутствует элемент на странице вызова в консоли всплывает ошибка, как бороться?
пока делаю так: проверяю на присутствие элемента, если ок, то запускаю.
может кто подскажет другой способ?

danik.js 21.01.2015 13:26

Какой еще элемент?

soltx 21.01.2015 13:51

допустим <div id="map"></div> отображается только на одной странице в разделе контакты, а скрипт на всех страницах и ошибка выскакивает там где нет <div id="map"></div>

SV0L0CH 21.01.2015 13:54

Есть способ: задействовать try.

danik.js 21.01.2015 14:19

Цитата:

Сообщение от SV0L0CH
Есть способ: задействовать try.

Есть конечно. Но нафига? Получается ты намеренно допускаешь ошибку. Зачем?

SV0L0CH 22.01.2015 06:38

Цитата:

Сообщение от danik.js (Сообщение 352563)
Есть конечно. Но нафига?

Одним try можно заменить дофига длинных проверок в if.
Хоть конкретно в данной задаче это не даст ровно никаких преимуществ, но человек спрашивает именно про способы.

danik.js 22.01.2015 10:35

Цитата:

Сообщение от SV0L0CH
Одним try можно заменить дофига длинных проверок в if.

Нельзя. На первой же ошибке выполнение кода прервется и остальные "длинные" проверки даже не будут проверены.

danik.js 22.01.2015 10:37

Поэтому ты предлагаешь заменить код:

var someElement = document.querySelector('.selector');
if (someElement)
    doSomething(someElement);

На такой:
var someElement = document.querySelector('.selector');
try {
    doSomething(someElement);
} catch (e) {}


Это глупо.

SV0L0CH 22.01.2015 12:08

danik.js,
Все необходимые проверки уже реализованы в doSomething. Зачем их придумывать самому повторно? Это же глупость! :haha:
Разумней воспользоваться исключениями как частью API.

danik.js 22.01.2015 12:44

Цитата:

Сообщение от SV0L0CH
Разумней воспользоваться исключениями как частью API.

Возможно, но только если исключение не "Cannot read property 'blalba' of null".


Часовой пояс GMT +3, время: 07:24.