Проблемы с методами
Приветствую!
Есть код: 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? |
стринге нельзя добавить доп свойства:
var str = "her tam lisiy"; str.tratata = 'hehe'; alert(str.tratata); |
devote, Maxmaxmахimus,
и как быть? Просто вообще никаких мыслей по поводу этого решения не возникает. |
Maxmaxmахimus,
изменил первый пост. Теперь ваше сиятельство может помочь? |
без переписывания функции-конструктора, передавай не строку как примитивное значение, а строку как объект.
написано об этом сверху |
melky,
вы про это: j(new String('res')).spoiler({change: 'q'}); ? |
да.
|
melky,
теперь выдаёт "Uncaught TypeError: Cannot read property 'obj' of undefined". Да и к тому же этот вариант не очень подходит, я хочу, чтобы объёртка была как можно минимальней, а в данном случае приходится дописывать j(new String('res')).spoiler({change: 'q'}); . |
тогда придется конструктор переписывать.
|
melky,
можете по подробнее рассказать? Какие изменения нужно сделать? |
Часовой пояс GMT +3, время: 06:41. |