Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Определение DOM объекта (https://javascript.ru/forum/events/21178-opredelenie-dom-obekta.html)

leoHex 31.08.2011 15:01

Определение DOM объекта
 
Здравствуйте, ув. форумчане!
как javascript определить тег объекта?
В смысле, есть dom объект:
<div id="obj">...</div>

...
document.getElementById('obj');
...

Так вот, можно ли определить что это именно div?

Octane 31.08.2011 16:06

document.getElementById("obj").nodeName.toLowerCase() == "div"

melky 31.08.2011 16:21

document.getElementById("obj").tagName === "DIV"

Octane 31.08.2011 16:34

melky, когда документ отдается как application/xml+xhtml (да это фантастика, но все же), то регистр в имени тегов имеет значение. И при сравнении строки со строкой нет смысла в строгом равенстве.

melky 31.08.2011 16:42

Цитата:

Сообщение от Octane (Сообщение 123883)
melky, когда документ отдается как application/xml+xhtml (да это фантастика, но все же), то регистр в имени тегов имеет значение.

это да, я согласен. но приведение строки к lowercase стоит времени.
Цитата:

Сообщение от Octane (Сообщение 123883)
И при сравнении строки со строкой нет смысла в строгом равенстве.

это добавляет уверенности.:)

Octane 31.08.2011 16:56

Цитата:

Сообщение от melky
это добавляет уверенности

http://javascript.ru/ecma/part11#a-11.9.3

melky 31.08.2011 16:59

я знаю, как они отличаются друг от друга.

это просто привычка после JavaScript Garden писать строгое равенство, если знаю, что операторы одинаковых типов и приведения не будет.

B@rmaley.e><e 01.09.2011 18:12

Цитата:

Сообщение от melky
операторы

операнды*

Цитата:

Сообщение от Octane
И при сравнении строки со строкой нет смысла в строгом равенстве.

А Крокфорд в своей javascript: The Good Parts советует.

Octane 01.09.2011 18:33

Ну тут одинаковое количество шагов:

http://javascript.ru/ecma/part11#a-11.9.3
Цитата:

1. Если Тип(x) отличается от Типа(y) - переход на шаг 14.

2. Если Тип(x) равен Undefined - вернуть true.

3. Если Тип(x) равен Null - вернуть true.

4. Если Тип(x) не равен Number - переход на шаг 11.

11. Если Тип(x) равен String - вернуть true, если x и y являются в точности одинаковыми последовательностями символов (имеют одинаковую длину и одинаковые символы в соответствующих позициях). Иначе вернуть false.
http://javascript.ru/ecma/part11#a-11.9.6
Цитата:

1. Если Тип(x) отличается от Типа(y), вернуть false.

2. Если Тип(x) равен Undefined - вернуть true.

3. Если Тип(x) равен Null - вернуть true.

4. Если Тип(x) не равен Number - переход на шаг 11.

11. Если Тип(x) равен String - вернуть true, если x и y являются в точности одинаковыми последовательностями символов (имеют одинаковую длину и одинаковые символы в соответствующих позициях). Иначе вернуть false.
Д. Сошников писал об этом где-то здесь.

B@rmaley.e><e 01.09.2011 20:29

Octane, в данном случае — да. Но если постоянно использовать ===, то со временем привыкнешь и будешь автоматом набирать его вместо ==, который может не вовремя подвести (вспоминаем про отсутствие транзитивности).


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