Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как проверить присутствует ли на странице заданный объект? (https://javascript.ru/forum/misc/2235-kak-proverit-prisutstvuet-li-na-stranice-zadannyjj-obekt.html)

nick 25.11.2008 16:00

Как проверить присутствует ли на странице заданный объект?
 
Здравствуйте!

У меня возникла следующая ситуация:
есть свой собственный класс Toolbar.
На страницах создаются объекты этого класса след. образом:
<script language="javascript">
var tbIns = new ToolBar (var1, var2, var3).
...

Как узнать при загрузке страницы, не работая со строками, присутствует ли на ней объекты созданного мной класса? (на уровне объектной модели)

Подскажите пожалуйста!:)

Dmitry A. Soshnikov 25.11.2008 22:11

если определены глобально, то

if (window['tbIns']) { ...


Или

if (window.tbIns) { ...


Либо

if ('tbIns' in window) { ...


.ps: роль window в примерах может играть любой известный скоп, в котором определен объект. Первый и третий случаи могут использоваться, когда имя объекта для проверки заранее не известно. Причем, последний проверяет именно присутствие данного объекта (первые два случая могут вернуть false (исходя из значения), даже если свойство будет присутствовать).

no_alex 25.11.2008 23:59

nick,
Вам нужно просто проверить наличие определенных объектов или найти все экземпляры класса?
Если надо найти экземпляры, то вот пример:
<script type="text/javascript">
var ToolBar = function(var1, var2, var3)
{

}
var a = new ToolBar(1958,5,21);
var b = new ToolBar(1958,5,21);
var z = new Date(1958,5,21);

for (var k in window) {
    if (typeof(window[k]) == "object" && window[k] instanceof ToolBar) {
        alert ('Переменная "' + k + '" экземпляр класса "ToolBar".');
    }
}
</script>


Естественно оно тут ищет только в свойствах объекта window. Если надо искать глубже - тут надо строить рекурсию.

nick 26.11.2008 15:11

Все. Понял. Спасибо большое за помощь!:)

Delphine 05.06.2009 03:55

Всем привет!
У меня примерно подобный вопрос.
на страницах есть
<h3 class="nav1">
<h3 class="nav2">
...

Как узнать присутствует ли на странице объект <h3 class="nav...">?
(Или это не объект... я уж точно не знаю, т.к. в JS не разбираюсь)

Помогите великие ГУРУ!!! Буду очень признателен.
По описанному выше методу что то не получилось...

Gvozd 05.06.2009 04:40

это DOM-сущности. и работаь с ним надо при помощи методов DOM
var h3_elems=document.getElementsByTagName('h3');
for(var i=0;i<h3_elems.length;i++){
if(h3_elems[i].className=='nav1'){
//....PROFIT
}
}

Delphine 05.06.2009 15:28

Огромное спасибо! Помогло!

unbreaker88 18.12.2010 19:16

Цитата:

Сообщение от no_alex (Сообщение 8825)
nick,
Вам нужно просто проверить наличие определенных объектов или найти все экземпляры класса?
Если надо найти экземпляры, то вот пример:
<script type="text/javascript">
var ToolBar = function(var1, var2, var3)
{

}
var a = new ToolBar(1958,5,21);
var b = new ToolBar(1958,5,21);
var z = new Date(1958,5,21);

for (var k in window) {
    if (typeof(window[k]) == "object" && window[k] instanceof ToolBar) {
        alert ('Переменная "' + k + '" экземпляр класса "ToolBar".');
    }
}
</script>


Естественно оно тут ищет только в свойствах объекта window. Если надо искать глубже - тут надо строить рекурсию.

Код работает верно везде, кроме IE. В IE цикл не выводит переменные a и b, хотя к ним можно обращаться в виде window.a либо window['a']. Невероятный IE! :D


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