У меня довольно сложная часть Javascript, которая работает безупречно без ошибок в Google Chrome, Firefox, Safari и Opera. Однако, как всегда, это бесконечно раздражающий случай, он полностью терпит неудачу в Internet Explorer. Я испытал в IE7 и IE8 и получить ту же ошибку:IE8 дает ошибку «Недопустимый аргумент» при использовании prototype.js, как найти, где ошибка?
Invalid argument. prototype.js, line 2216, character 9
Я использую Prototype 1.6.1 размещенного через Google. Указанная ошибка не очень помогает, поскольку она не говорит мне, где в моем фактическом коде происходит ошибка. Линия упоминается в сообщении об ошибке является шестой строкой из нижней части в следующем коде:
setStyle: function(element, styles) {
element = $(element);
var elementStyle = element.style, match;
if (Object.isString(styles)) {
element.style.cssText += ';' + styles;
return styles.include('opacity') ?
element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : element;
}
for (var property in styles)
if (property == 'opacity') element.setOpacity(styles[property]);
else
elementStyle[(property == 'float' || property == 'cssFloat') ?
(Object.isUndefined(elementStyle.styleFloat) ? 'cssFloat' : 'styleFloat') :
property] = styles[property];
return element;
},
Поскольку в SetStyle блоке коды, я предполагаю, что ошибка возникает, когда я устанавливаю атрибуты стиля для некоторого элемента. Тем не менее, я вызываю setStyle более 100 раз в этом скрипте и пытаюсь выяснить, где именно ошибка происходит в течение нескольких часов. Есть ли что-нибудь, что я могу сделать, чтобы помочь себе найти, где происходит ошибка?
Проблема очень вероятна, что вы пытаетесь установить свойство style для некоторого недопустимого значения. Как побочная заметка, делать свою петлю таким образом ('for ... in') довольно опасно **, особенно **, когда вы используете Prototype. Вы должны включить проверку для 'hasOwnProperty' как минимум. – Pointy
Это не мой код, то есть прототип. –
О, ха-ха-ха! Понимаю. – Pointy