05.12.2010, 22:56
|
|
Профессор
|
|
Регистрация: 26.11.2009
Сообщений: 204
|
|
Проверка HTML элемента на существование
У меня есть код:
var test = document.getElementById('test_1').innerHTML;
После ещё некоторые действия, так вот, и если элемента с id=test_1 нет, то то что после этой строки "убивается" и скрипт до конца не выполняется. Как проверить на существование этот элемент, чтоб ошибки не было, если этого элемента нет?
|
|
05.12.2010, 23:10
|
Особый гость
|
|
Регистрация: 02.04.2010
Сообщений: 4,260
|
|
<script type="text/javascript">
window.onload = function(){
alert(document.getElementById('div').length != 0 ? true : false);
};
</script>
<div id="div"></div>
|
|
05.12.2010, 23:27
|
|
⊞ Развернуть
|
|
Регистрация: 11.01.2010
Сообщений: 1,810
|
|
Сообщение от monolithed
|
document.getElementById('div').length
|
Что-то? Пахнет бредом
alert( document.getElementById('div').length )
Достаточно проверки на не null.
alert( document.getElementById('div') != null )
|
|
05.12.2010, 23:50
|
Особый гость
|
|
Регистрация: 02.04.2010
Сообщений: 4,260
|
|
Сообщение от B@rmaley.e><e
|
Что-то? Пахнет бредом
|
Ничего подобного, такой способ определения также имеет место быть, потому как работает корректно
Кстати в том же jQuery повсеместно используется аналогичная проверка:
$("#div").size()
$("#div").length
$("#div")[0]
|
|
06.12.2010, 00:20
|
|
Матрос
|
|
Регистрация: 04.04.2008
Сообщений: 6,246
|
|
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>
|
|
06.12.2010, 00:28
|
|
Матрос
|
|
Регистрация: 04.04.2008
Сообщений: 6,246
|
|
открыл вкладку давно, и не видел ваших новых сообщений, прежде чем ответить
Сообщение от B@rmaley.e><e
|
Достаточно проверки на не null.
|
даже необходимо.
потмоу что взятие свойства length у null_объекта - это критическая ошибка о которой говорил ТС
Сообщение от monolithed
|
Ничего подобного, такой способ определения также имеет место быть, потому как работает корректно
|
нет не работает
я уже привел пример.
и это весьма очевидный пример, так что ваша ошибка непростительна.
вы привели код именно с той проблемой, что просил решить ТС.
Сообщение от monolithed
|
Кстати в том же jQuery повсеместно используется аналогичная проверка:
|
именно поэтому рекомендуется сперва изучить нормально язык, прежде чем лезть изучать фреймворки.
то, что jQuery сюсюкается с вами как с имбицилом, чтобы вы не дай бог не выстрелили себе в ногу веревкой, это не означает, что JavaScript Изначально такой
нет, он не такой.
|
|
06.12.2010, 08:19
|
Особый гость
|
|
Регистрация: 02.04.2010
Сообщений: 4,260
|
|
Сообщение от Gvozd
|
потмоу что взятие свойства length у null_объекта - это критическая ошибка о которой говорил ТС
|
Я знаю, что null_объекта нет свойства length, написал бред признаю потому что:
Сообщение от Gvozd
|
jQuery сюсюкается с вами как с имбицилом, чтобы вы не дай бог не выстрелили себе в ногу веревкой
|
Переклинело, потому что такую проверку в их справке где-то видел и забылся что:
Сообщение от Gvozd
|
JavaScript Изначально такой
нет, он не такой.
|
Все мозни проел этим jQuery, потому что на работе запрещено по регламенту писать код на родном, только на этой муте (ни шагу в сторону). Есть повод задуматься о смене работы, где все с точностью наоборот, пока не переклинело еще болше, тьфу))
|
|
06.12.2010, 16:49
|
|
Профессор
|
|
Регистрация: 26.11.2009
Сообщений: 204
|
|
Спасибо
|
|
06.12.2010, 23:18
|
|
Матрос
|
|
Регистрация: 04.04.2008
Сообщений: 6,246
|
|
monolithed,
что вам мешает самосовершенствоваться после работы?
создайте какой-нибудь интересный сервис, и пишите код к нему на чистом JS =)
|
|
06.12.2010, 23:53
|
Особый гость
|
|
Регистрация: 02.04.2010
Сообщений: 4,260
|
|
Сообщение от Gvozd
|
что вам мешает самосовершенствоваться после работы?
|
Положа руку на сердце 99,9% свободного времени я уделяю именно самосовершенствованию своих знаний (даже во сне)
но к сожалению после работы реально порой переклинивает, т.к. с тем же length у нас в команде регламентированно именно так делать проверку (т.к. помимо меня есть и другие разработчики, которые до меня так писали и будут писать, потому что в jQuery это корректно).
Сообщение от Gvozd
|
создайте какой-нибудь интересный сервис, и пишите код к нему на чистом JS =)
|
В этом направлении я активно работаю, только JS много не бывает))
На самом деле я мечтаю сделать какой-нибудь сервис полностью на JS включая серверную часть, но пока что нет идей, если подкинете/намекнете буду признателен.
|
|
|
|