Мой скрипт выдает ошибку только в IE8.Я использую Mootools 1.3.
Выдается ошибка:
Объект не поддерживает это свойство / метод.
Отладчик IE8 сообщает мне, что ошибкаthis (строка с **):
append: function(original){
for (var i = 1, l = arguments.length; i < l; i++){
var extended = arguments[i] || {};
**for (var key in extended) original[key] = extended[key];**
}
return original;
}
Приведенный выше код находится вокруг строки 380 в несжатом варианте.Это часть Object.extend.
Теперь я подозреваю, что это происходит, когда я делаю каждый на массиве как объект.Это код, который я подозреваю, вызывает это:
var self = this,
c = certManager.addedCerts,
e = window.expManager.workExp,
cA = this.cA = [],
eA = this.eA = [];
c.each(function(x){
cA.push(x.value);
});
e.each(function(x){
eA.push(x.retrieve('info'));
});
Первый массив (с) заполнен только числами.Второй (e) заполняется объектами, в которых происходит сохранение / извлечение.
Объекты, подобные массиву, объявляются так:
addedCerts = this.addedCerts = []
workExp = this.workExp = []
в соответствующих модулях (certManager &expManager).
Кто-нибудь знает, почему это происходит?
РЕДАКТИРОВАТЬ:
По запросу, вот как заполняется workExp:
var r = $('resumeContent'),
h = "<div class=\"contentRowRight\"><a href=\"#\" class=\"xHover remove\" > </a><br/>" + yV + " " + mV + "</div><strong>" + pV + "</strong><br />" + cV,
n = new Element('div', {html: h, 'class': 'contentRow'}).inject(r, 'top');
n.getElement('.remove').addEvents({
'click': function (e) {
e.preventDefault();
self.removeExp(this);
},
'mouseover': function(){
var el = this;
this.store('mO', true);
(function() {
if (el.retrieve('mO')){
el.fieldToolTip('Remove Experience',false,false);
el.store('mO', false);
}
}).delay(500);
},
'mouseout': function(){
this.store('mO', false);
this.removeToolTip();
}
});
n.store('info', {'p': pV, 'c': cV, 'y': yV.replace(' year', '').replace('s', '').replace(' and', ''), 'm': mV.replace('month', '').replace('s', '')});
this.workExp[this.workExp.length] = n;
То, что я делаю, является частью формы.У меня есть несколько полей внутри формы, вы заполняете их, а затем нажимаете кнопку Добавить, и это создает новую «строку».Эти строки содержат информацию об опыте работы пользователей.После того как пользователь добавил весь свой опыт работы, он может продолжать заполнять форму.После заполнения формы я перебираю объект массива и преобразую значения в объект JSON, который затем помещаю в скрытое значение и передаю его в бэкэнд.
Если вы, ребята, хотите увидетьСценарий в действии, вы можете посетить http://www.oilforce.com/user-signup.php. Вы будете вынуждены заполнить первую страницу, которая является личной информацией (вы можете ввести мусор, это не значит, что вы все равно его отправите), а затем нажать 3раз.На четвертой странице есть форма опыта работы.Вот что делает приведенный выше код.