Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 20.08.2012, 01:33
Профессор
Отправить личное сообщение для platedz Посмотреть профиль Найти все сообщения от platedz
 
Регистрация: 15.08.2012
Сообщений: 285

Спасибо попробую. Возникла другая проблема. Если элемент не существует, то метод undefined. И на существующие элементы метод перестает работать. Подскажите, пожалуйста, как это обойти?
Ответить с цитированием
  #22 (permalink)  
Старый 20.08.2012, 01:41
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 16.12.2011
Сообщений: 4,415

код в студию=)
Ответить с цитированием
  #23 (permalink)  
Старый 20.08.2012, 01:51
Профессор
Отправить личное сообщение для platedz Посмотреть профиль Найти все сообщения от platedz
 
Регистрация: 15.08.2012
Сообщений: 285

Пока код все тот же.

tel = function(window){

return {
elems : function(e) { dd = document.getElementById(e);  return this;},
 first: function () {

 alert(dd.innerHTML+" - "+this);
 
 return this;
},

 second: function () {

 alert(dd.id+" - "+this);
 return this;
}

}

}(window);

tel.elems("a").first().second();
tel.elems("b").first().second();


Если id="a" на странице не существует, то el.elems("b").first().second(); не выполнится, а надо чтобы работал.
Ответить с цитированием
  #24 (permalink)  
Старый 20.08.2012, 01:54
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 16.12.2011
Сообщений: 4,415

elems : function(e) { 
try {
dd = document.getElementById(e); 
} catch(e) {}
 return this;
},
Ответить с цитированием
  #25 (permalink)  
Старый 20.08.2012, 01:58
Профессор
Отправить личное сообщение для platedz Посмотреть профиль Найти все сообщения от platedz
 
Регистрация: 15.08.2012
Сообщений: 285

Спасибо, я тоже так думал. Но все равно не работает.
Ответить с цитированием
  #26 (permalink)  
Старый 20.08.2012, 02:12
Профессор
Отправить личное сообщение для platedz Посмотреть профиль Найти все сообщения от platedz
 
Регистрация: 15.08.2012
Сообщений: 285

Кстати, вот так у меня не получилось
function $() {return {}.prototype = tel.elems; }



Зато вышло так,
function $(e) {return {}.prototype = tel.elems(e); }



Но я сделал так,
function $(e) {return  tel.elems(e); }

тк.. с прототипами у меня дела совсем плохо обстоят. Хотя буду рад любому пояснению касательно того, что это такое и зачем они нужны и как с ними работать.
Ответить с цитированием
  #27 (permalink)  
Старый 20.08.2012, 02:15
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 16.12.2011
Сообщений: 4,415

http://learn.javascript.ru/inheritance-intro
Цитата:
function $(e) {return tel.elems(e); }
это работает потому что вы вызваете метод elems и он возвращает this.
лучше уже так
function $(e) {return  tel; }
Ответить с цитированием
  #28 (permalink)  
Старый 20.08.2012, 03:14
Профессор
Отправить личное сообщение для platedz Посмотреть профиль Найти все сообщения от platedz
 
Регистрация: 15.08.2012
Сообщений: 285

Спасибо за информацию. Уже начинаю немного понимать, в плане прототипов, особенно в сравнении с php. Хотя еще только на далеко базовом уровне.
Ваш пример не работает, и что не менее Важно теряется elems, т.е. даже если и вернуть корректно tel и заменить его на другое название то все равно придется вызывать elems, например $.elems(id) а нужно $(id)

А самое главное, если id не существует, то код не работает, и это нужно как-то обойти.
Ответить с цитированием
  #29 (permalink)  
Старый 20.08.2012, 03:36
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 16.12.2011
Сообщений: 4,415

Цитата:
А самое главное, если id не существует, то код не работает, и это нужно как-то обойти.
Сообщение от cyber Посмотреть сообщение
elems : function(e) { 
try {
dd = document.getElementById(e); 
} catch(e) {}
 return this;
},
а насчет функции $ я ступил немного , сонный уже..
вот так правильно
function $(e) {return tel.elems(e); }

<!DOCTYPE HTML>
<html>
  <head> </head>
  <body>

    <script>

      var object_ = {
        message: function (id){
        alert(id)
         return this;
        }
      
      
      }
      
      function $ (id) {
      
      return object_.message(id);
      }

$('привет');
    </script>

  </body>
</html>
Ответить с цитированием
  #30 (permalink)  
Старый 20.08.2012, 03:48
Профессор
Отправить личное сообщение для platedz Посмотреть профиль Найти все сообщения от platedz
 
Регистрация: 15.08.2012
Сообщений: 285

Спасибо за ответ.
try{}cathe(){} не дает результата.
Насколько я понимаю, вызывается метод к элементу которого еще не существует.
В общем если эту проблему решить, то все будет просто замечательно.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
jQuery UI Slider - как синхронизировать слайдер со значнием? frightened jQuery 0 23.07.2011 23:19
Необходимы советы как убирать не нужное из библиотеки jquery. dr_gluk jQuery 13 18.07.2011 11:05
Как получить список пользовательских функций объекта window? Маэстро Events/DOM/Window 13 03.07.2010 12:20
Как отключить submit формы в jQuery? khusamov Общие вопросы Javascript 2 07.07.2009 23:54
Как правильно подгрузить jQuery Siton jQuery 4 15.06.2009 08:54