Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.12.2010, 21:56
Аватар для MCTrane
Профессор
Отправить личное сообщение для MCTrane Посмотреть профиль Найти все сообщения от MCTrane
 
Регистрация: 26.11.2009
Сообщений: 204

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

После ещё некоторые действия, так вот, и если элемента с id=test_1 нет, то то что после этой строки "убивается" и скрипт до конца не выполняется. Как проверить на существование этот элемент, чтоб ошибки не было, если этого элемента нет?
Ответить с цитированием
  #2 (permalink)  
Старый 05.12.2010, 22:10
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 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>
Ответить с цитированием
  #3 (permalink)  
Старый 05.12.2010, 22:27
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Сообщение от monolithed
document.getElementById('div').length
Что-то? Пахнет бредом
alert( document.getElementById('div').length )
Достаточно проверки на не null.
alert( document.getElementById('div') != null )
Ответить с цитированием
  #4 (permalink)  
Старый 05.12.2010, 22:50
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от B@rmaley.e><e
Что-то? Пахнет бредом
Ничего подобного, такой способ определения также имеет место быть, потому как работает корректно

Кстати в том же jQuery повсеместно используется аналогичная проверка:
$("#div").size()
$("#div").length
$("#div")[0]
Ответить с цитированием
  #5 (permalink)  
Старый 05.12.2010, 23:20
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 03.04.2008
Сообщений: 6,239

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>
Ответить с цитированием
  #6 (permalink)  
Старый 05.12.2010, 23:28
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 03.04.2008
Сообщений: 6,239

открыл вкладку давно, и не видел ваших новых сообщений, прежде чем ответить
Сообщение от B@rmaley.e><e
Достаточно проверки на не null.
даже необходимо.
потмоу что взятие свойства length у null_объекта - это критическая ошибка о которой говорил ТС
Сообщение от monolithed
Ничего подобного, такой способ определения также имеет место быть, потому как работает корректно
нет не работает
я уже привел пример.
и это весьма очевидный пример, так что ваша ошибка непростительна.
вы привели код именно с той проблемой, что просил решить ТС.
Сообщение от monolithed
Кстати в том же jQuery повсеместно используется аналогичная проверка:
именно поэтому рекомендуется сперва изучить нормально язык, прежде чем лезть изучать фреймворки.
то, что jQuery сюсюкается с вами как с имбицилом, чтобы вы не дай бог не выстрелили себе в ногу веревкой, это не означает, что JavaScript Изначально такой
нет, он не такой.
Ответить с цитированием
  #7 (permalink)  
Старый 06.12.2010, 07:19
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от Gvozd
потмоу что взятие свойства length у null_объекта - это критическая ошибка о которой говорил ТС
Я знаю, что null_объекта нет свойства length, написал бред признаю потому что:
Сообщение от Gvozd
jQuery сюсюкается с вами как с имбицилом, чтобы вы не дай бог не выстрелили себе в ногу веревкой
Переклинело, потому что такую проверку в их справке где-то видел и забылся что:
Сообщение от Gvozd
JavaScript Изначально такой
нет, он не такой.
Все мозни проел этим jQuery, потому что на работе запрещено по регламенту писать код на родном, только на этой муте (ни шагу в сторону). Есть повод задуматься о смене работы, где все с точностью наоборот, пока не переклинело еще болше, тьфу))
Ответить с цитированием
  #8 (permalink)  
Старый 06.12.2010, 15:49
Аватар для MCTrane
Профессор
Отправить личное сообщение для MCTrane Посмотреть профиль Найти все сообщения от MCTrane
 
Регистрация: 26.11.2009
Сообщений: 204

Спасибо
Ответить с цитированием
  #9 (permalink)  
Старый 06.12.2010, 22:18
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 03.04.2008
Сообщений: 6,239

monolithed,
что вам мешает самосовершенствоваться после работы?
создайте какой-нибудь интересный сервис, и пишите код к нему на чистом JS =)
Ответить с цитированием
  #10 (permalink)  
Старый 06.12.2010, 22:53
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

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

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка массива на наличие элемента Скриптор Общие вопросы Javascript 16 10.09.2012 17:00
Очень нужно.. Отправка HTML куски в JSON от сервера используя Ajax bivnikus jQuery 8 26.10.2010 22:54
проверка дочернего элемента AndreyT jQuery 1 15.04.2010 07:27
Динамические html элементы sky Элементы интерфейса 2 07.03.2010 10:58
проверка элемента на существование Дмитрий С. Общие вопросы Javascript 2 13.11.2008 11:05