Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.11.2008, 16:00
Новичок на форуме
Отправить личное сообщение для nick Посмотреть профиль Найти все сообщения от nick
 
Регистрация: 25.11.2008
Сообщений: 2

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

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

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

Подскажите пожалуйста!
Ответить с цитированием
  #2 (permalink)  
Старый 25.11.2008, 22:11
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

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

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


Или

if (window.tbIns) { ...


Либо

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


.ps: роль window в примерах может играть любой известный скоп, в котором определен объект. Первый и третий случаи могут использоваться, когда имя объекта для проверки заранее не известно. Причем, последний проверяет именно присутствие данного объекта (первые два случая могут вернуть false (исходя из значения), даже если свойство будет присутствовать).
__________________
Тонкости ECMAScript
Ответить с цитированием
  #3 (permalink)  
Старый 25.11.2008, 23:59
Аспирант
Отправить личное сообщение для no_alex Посмотреть профиль Найти все сообщения от no_alex
 
Регистрация: 20.08.2008
Сообщений: 56

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. Если надо искать глубже - тут надо строить рекурсию.

Последний раз редактировалось no_alex, 26.11.2008 в 00:02.
Ответить с цитированием
  #4 (permalink)  
Старый 26.11.2008, 15:11
Новичок на форуме
Отправить личное сообщение для nick Посмотреть профиль Найти все сообщения от nick
 
Регистрация: 25.11.2008
Сообщений: 2

Все. Понял. Спасибо большое за помощь!
Ответить с цитированием
  #5 (permalink)  
Старый 05.06.2009, 03:55
Delphine
 
Сообщений: n/a

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

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

Помогите великие ГУРУ!!! Буду очень признателен.
По описанному выше методу что то не получилось...
Ответить с цитированием
  #6 (permalink)  
Старый 05.06.2009, 04:40
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,234

это DOM-сущности. и работаь с ним надо при помощи методов DOM
var h3_elems=document.getElementsByTagName('h3');
for(var i=0;i<h3_elems.length;i++){
if(h3_elems[i].className=='nav1'){
//....PROFIT
}
}
Ответить с цитированием
  #7 (permalink)  
Старый 05.06.2009, 15:28
Delphine
 
Сообщений: n/a

Огромное спасибо! Помогло!
Ответить с цитированием
  #8 (permalink)  
Старый 18.12.2010, 19:16
Аватар для unbreaker88
Новичок на форуме
Отправить личное сообщение для unbreaker88 Посмотреть профиль Найти все сообщения от unbreaker88
 
Регистрация: 18.12.2010
Сообщений: 6

Сообщение от no_alex Посмотреть сообщение
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!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как проверить загружены ли все картинки браузером Aderba jQuery 13 29.05.2014 14:18
Как проверить существование функции Aderba Общие вопросы Javascript 2 14.11.2008 16:09
как сделать гиперсылку на объект javascript??? kos_walker Общие вопросы Javascript 3 30.09.2008 06:58
Как передать фокус флешке на странице? dArky Общие вопросы Javascript 3 10.08.2008 01:03
как проверить поддеружет браузер определенное событие? GOll Элементы интерфейса 9 24.07.2008 14:40