Проблемы с методами
Приветствую!
Есть код:
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, время: 21:57. |