Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.04.2012, 21:05
Профессор
Отправить личное сообщение для (Sandr) Посмотреть профиль Найти все сообщения от (Sandr)
 
Регистрация: 14.10.2010
Сообщений: 376

Проблемы с методами
Приветствую!

Есть код:

function j(data) {
  //return new Operation(data); 
  if(!data.oper) {
    data.oper = new Operation(data);
  }
  return data.oper;
  
}
function Operation(data) {
  if(typeof(data) == 'object')
    this.obj = data;
  else
    this.obj = document.getElementById(data);
  this.stackClick = [];
  return this;
}
Operation.prototype = {
  click: function(func) {
	  var self = this;
	  this.stackClick.push(func);
	  if(!this.obj.onclick) this.obj.onclick = function() { self.startClick(); }
  },
  startClick: function() {
    for(var i = 0; i <= this.stackClick.length-1; i++) {
      this.stackClick[i]();
    }
  },
  spoiler: function(data) {
    var cObj = this.obj;
    var sObj = j(data['change']).obj;
    j(cObj).click(function() {
      sObj.style.display == 'none' ? sObj.style.display = 'block' : sObj.style.display = 'none';
    });
  }
}
window.onload = function() {
  j(document).click(function() { document.getElementById('q').innerHTML = Math.floor( Math.random() * (10 - 1 + 1) ) + 1; });  
  j(document).click(function() { document.getElementById('w').innerHTML = Math.floor( Math.random() * (10 - 1 + 1) ) + 1; });
  j('res').spoiler({change: 'q'});   
}


При запуске хром выдаёт следующее: "Uncaught TypeError: Cannot call method 'spoiler' of undefined".
Подскажите пожалуйста, в чём ошибка? Чем ему не нравится spoiler?

Последний раз редактировалось (Sandr), 19.04.2012 в 21:54.
Ответить с цитированием
  #2 (permalink)  
Старый 19.04.2012, 21:19
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

стринге нельзя добавить доп свойства:
var str = "her tam lisiy";
str.tratata = 'hehe';
alert(str.tratata);
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #3 (permalink)  
Старый 19.04.2012, 21:38
Профессор
Отправить личное сообщение для (Sandr) Посмотреть профиль Найти все сообщения от (Sandr)
 
Регистрация: 14.10.2010
Сообщений: 376

devote, Maxmaxmахimus,
и как быть? Просто вообще никаких мыслей по поводу этого решения не возникает.
Ответить с цитированием
  #4 (permalink)  
Старый 19.04.2012, 21:54
Профессор
Отправить личное сообщение для (Sandr) Посмотреть профиль Найти все сообщения от (Sandr)
 
Регистрация: 14.10.2010
Сообщений: 376

Maxmaxmахimus,
изменил первый пост. Теперь ваше сиятельство может помочь?
Ответить с цитированием
  #5 (permalink)  
Старый 19.04.2012, 22:13
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

без переписывания функции-конструктора, передавай не строку как примитивное значение, а строку как объект.

написано об этом сверху
Ответить с цитированием
  #6 (permalink)  
Старый 19.04.2012, 22:36
Профессор
Отправить личное сообщение для (Sandr) Посмотреть профиль Найти все сообщения от (Sandr)
 
Регистрация: 14.10.2010
Сообщений: 376

melky,
вы про это: j(new String('res')).spoiler({change: 'q'}); ?
Ответить с цитированием
  #7 (permalink)  
Старый 19.04.2012, 22:45
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

да.
Ответить с цитированием
  #8 (permalink)  
Старый 19.04.2012, 23:17
Профессор
Отправить личное сообщение для (Sandr) Посмотреть профиль Найти все сообщения от (Sandr)
 
Регистрация: 14.10.2010
Сообщений: 376

melky,
теперь выдаёт "Uncaught TypeError: Cannot read property 'obj' of undefined".
Да и к тому же этот вариант не очень подходит, я хочу, чтобы объёртка была как можно минимальней, а в данном случае приходится дописывать j(new String('res')).spoiler({change: 'q'}); .
Ответить с цитированием
  #9 (permalink)  
Старый 19.04.2012, 23:41
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

тогда придется конструктор переписывать.
Ответить с цитированием
  #10 (permalink)  
Старый 20.04.2012, 00:22
Профессор
Отправить личное сообщение для (Sandr) Посмотреть профиль Найти все сообщения от (Sandr)
 
Регистрация: 14.10.2010
Сообщений: 376

melky,
можете по подробнее рассказать? Какие изменения нужно сделать?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемы при установке модулей node.js tadjik1 AJAX и COMET 1 18.03.2012 02:20
Решение проблемы с отображением элементов на странице mozyr Javascript под браузер 17 13.01.2012 02:34
Проблемы кроссбраузерности под 64-разрядной OS Сергеев_ЕВ Javascript под браузер 15 26.01.2010 21:58
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 14:37
Drug&Drop + всплывание события = проблемы =(( _NoName_ Events/DOM/Window 4 05.03.2009 17:47