Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проверка HTML элемента на существование (https://javascript.ru/forum/misc/13605-proverka-html-ehlementa-na-sushhestvovanie.html)

MCTrane 05.12.2010 22:56

Проверка HTML элемента на существование
 
У меня есть код:
var test = document.getElementById('test_1').innerHTML;

После ещё некоторые действия, так вот, и если элемента с id=test_1 нет, то то что после этой строки "убивается" и скрипт до конца не выполняется. Как проверить на существование этот элемент, чтоб ошибки не было, если этого элемента нет?

monolithed 05.12.2010 23:10

<script type="text/javascript">
window.onload = function(){
    alert(document.getElementById('div').length != 0 ? true : false);
};
</script>
<div id="div"></div>

B@rmaley.e><e 05.12.2010 23:27

Цитата:

Сообщение от monolithed
document.getElementById('div').length

Что-то? Пахнет бредом
alert( document.getElementById('div').length )
Достаточно проверки на не null.
alert( document.getElementById('div') != null )

monolithed 05.12.2010 23:50

Цитата:

Сообщение от B@rmaley.e><e
Что-то? Пахнет бредом

Ничего подобного, такой способ определения также имеет место быть, потому как работает корректно

Кстати в том же jQuery повсеместно используется аналогичная проверка:
$("#div").size()
$("#div").length
$("#div")[0]

Gvozd 06.12.2010 00:20

monolithed,
сделайте мои глаза разувидеть ваш код.
почему вы написали эту хуйню, и показали ее всем.
наш ресурс, между прочим даже дети читают
<script type="text/javascript">
window.onload = function(){
    alert(document.getElementById('div').length != 0 ? true : false);
    alert(document.getElementById('nonexistent_div').length != 0 ? true : false);//и тут скрипт вроде как неожиданно упал =)
};
</script>
<div id="div"></div>

document.getElementById возвращает единственный элемент, а не массив, и унего не может быть свойства length(которое в приведенном вами коде равно undefined, что не есть равно 0)

вот так вот верно:
<script type="text/javascript">
window.onload = function(){
    alert(document.getElementById('div') != null ? true : false);
    alert(document.getElementById('nonexistent_div') != null ? true : false);
};
</script>
<div id="div"></div>

Gvozd 06.12.2010 00:28

открыл вкладку давно, и не видел ваших новых сообщений, прежде чем ответить
Цитата:

Сообщение от B@rmaley.e><e
Достаточно проверки на не null.

даже необходимо.
потмоу что взятие свойства length у null_объекта - это критическая ошибка о которой говорил ТС
Цитата:

Сообщение от monolithed
Ничего подобного, такой способ определения также имеет место быть, потому как работает корректно

нет не работает
я уже привел пример.
и это весьма очевидный пример, так что ваша ошибка непростительна.
вы привели код именно с той проблемой, что просил решить ТС.
Цитата:

Сообщение от monolithed
Кстати в том же jQuery повсеместно используется аналогичная проверка:

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

monolithed 06.12.2010 08:19

Цитата:

Сообщение от Gvozd
потмоу что взятие свойства length у null_объекта - это критическая ошибка о которой говорил ТС

Я знаю, что null_объекта нет свойства length, написал бред признаю :thanks: потому что:
Цитата:

Сообщение от Gvozd
jQuery сюсюкается с вами как с имбицилом, чтобы вы не дай бог не выстрелили себе в ногу веревкой

Переклинело, потому что такую проверку в их справке где-то видел и забылся что:
Цитата:

Сообщение от Gvozd
JavaScript Изначально такой
нет, он не такой.

Все мозни проел этим jQuery, потому что на работе запрещено по регламенту писать код на родном, только на этой муте (ни шагу в сторону). Есть повод задуматься о смене работы, где все с точностью наоборот, пока не переклинело еще болше, тьфу));)

MCTrane 06.12.2010 16:49

Спасибо

Gvozd 06.12.2010 23:18

monolithed,
что вам мешает самосовершенствоваться после работы?
создайте какой-нибудь интересный сервис, и пишите код к нему на чистом JS =)

monolithed 06.12.2010 23:53

Цитата:

Сообщение от Gvozd
что вам мешает самосовершенствоваться после работы?

Положа руку на сердце 99,9% свободного времени я уделяю именно самосовершенствованию своих знаний (даже во сне)
но к сожалению после работы реально порой переклинивает, т.к. с тем же length у нас в команде регламентированно именно так делать проверку (т.к. помимо меня есть и другие разработчики, которые до меня так писали и будут писать, потому что в jQuery это корректно).

Цитата:

Сообщение от Gvozd
создайте какой-нибудь интересный сервис, и пишите код к нему на чистом JS =)

В этом направлении я активно работаю, только JS много не бывает))
На самом деле я мечтаю сделать какой-нибудь сервис полностью на JS включая серверную часть, но пока что нет идей, если подкинете/намекнете буду признателен.


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