[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Есть ли на странице элемент с таким ID?
GET
Привет.

Как думаете есть ли еще валидный способ определения:
есть ли такой ID на странице, кроме как:

var test=document.getElementById('test');
if(test)
{
test=document.getElementById('test').value;
alert(test);
}
else alert("Нет такого элемента");


И если нужно найти несколько элементов подряд (10-15), то хорошее ли решении загонять всю эту связку в цикл?
Типа:
i=i+1;
var test=document.getElementById('test'+i);


_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
waldicom
id должен быть на странице уникальным. Поэтому загонять всю эту связку в массив - это нехорошее решение.

_____________
Свои мозги еще никто не отменял.
Телепатов нету.
GET
waldicom

Дело в том, что их всех надо отправить аяксом для анализа. Поля добавляются динамически через кнопочку add поэтому их конечное число в счетчике JS функции...вот и кажется, что это единственное решение.

Хотя вот сейчас подумал, может их имена через массив как-нибудь сделать, как для обычных <input name="name[i]"> тогда интересно сможет JS собрать все одинаковые name на странице в массив...попробую smile.gif

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
sergeiss
Цитата (ABC @ 11.11.2013 - 05:24)
Как думаете есть ли еще валидный способ определения:
есть ли такой ID на странице,

Вот так будет, мне кажется, более "красиво" и более правильно:
var type = typeof( $('#dialog_main2').attr('id') );
if( type == 'undefined' )
alert( 'undefined!!!' );
else // if type is 'string'
alert( 'Type is string - id существует' );

Хотя, конечно, тут будет участвовать в итоге тот же document.getElementById(), только в неявном виде.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
kaww
sergeiss, так будет совсем не правильно и не красиво.
1. jQuery для такой пустяковой задачи (Сразу ответ на "сейчас у всех он подключен к проекту" - далеко не у всех, и тем более не известно использует ли его топикстартер)
2. $('#dialog_main2').attr('id') - селектор #dialog_main2 -уже сам пор себе исключает возможность выбора элемента без id, значит attr('id') - не имеет смысла
3. jquery парсит селектор, затем вызывает нативный getDocumentById, что несомненно медленнее чем сразу воспользоваться getDocumentById
4. дополнительная переменная type
Guest
Цитата (sergeiss @ 11.11.2013 - 07:33)
$(
sergeiss
kaww
1. Да, возможно и так. Но если jQuery есть, то тогда имеет смысл.
2. Не согласен. На выходе получаем undefined (нет такого айди) или string (есть айди). Без attr('id') не получим этого.
typeof( $('#dialog_main2') ) всё равно возвращает object, только неопределенный (естественно, при отсутствии айдишника) smile.gif
3. Я об этом написал тоже. Но "красивее" ж smile.gif И насчет скорости работы, я думаю, для большинства задач не существенно, т.к. вряд ли кто будет анализировать подряд сотни и тысячи айдишников.
4. Не существенно. Это я сделал отдельную переменную такую. А можно сразу анализировать, прямо в ИФе typeof использовать. Так что возможны вариации.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
GET
Да, jQuery есть, спасибо за вариант, но... в этом случае все таки оставлю свой.

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
kaww
Цитата (sergeiss @ 11.11.2013 - 03:59)
Не согласен. На выходе получаем undefined (нет такого айди) или string (есть айди). Без attr('id') не получим этого.

Мы получим $('#dialog_main2').length === 0, чего уже достаточно для определения того, что нет элемента с этим ид (еще это избавит от вызова двух функций).

З.Ы. Guest, отличная пикча
sergeiss
Цитата (kaww @ 11.11.2013 - 08:06)
Мы получим $('#dialog_main2').length === 0,

Можно и так smile.gif

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.