jQuery, IE и неверный аргумент

РЕДАКТИРОВАТЬ:

ОП здесь. Ну, проблема в архиве jQuery.JS. Я только что скачал последний, несжатый, и ошибка изменилась на строку 4619 символа 4.

Я подошел к этой строке, и там есть символ «}», LOL ... я упоминал, что ненавижу Internet Explorer?

Я понятия не имею, как это исправить, похоже, это ошибка в рамках :S


/РЕДАКТИРОВАТЬ

Ну привет! -Я ненавижу Internet Explorer :D-

Я сделал слайд с помощью jQuery, чтобы оживить небольшую галерею изображений.

http://www.imagina.com.uy/bentancorleborgne/?page_id=2< /а>

Прекрасно работает в Firefox, Safari и IE8.

Однако в IE7 и предыдущих версиях выдает ошибку. Выскакивает сообщение:

Ошибка в скрипте.

Линия: 20

Персонаж: 31759

Ошибка: неверный аргумент

URL: http-://www-.imagina.com.uy/bentancorleborgne/?page_id=2

У меня есть пара скриптов, работающих на этой странице, но поскольку ошибка появляется, когда я пытаюсь сдвинуть галерею, я предполагаю, что ошибка исходит из этого кода:

// JavaScript Document
$(document).ready(function() {
 var tablaWidth = parseFloat($('.imagenesWrapper table').css('width'), 10);
 var tdWidth = parseFloat($('.imagenesWrapper table tr td').css('width'), 10) + parseFloat($('.imagenesWrapper table tr td').css('margin-right'), 10);
 var cantCeldas = tablaWidth / tdWidth - 1;
 var posActual = 0;
 var leftCSS = 1;

 if(cantCeldas==1) {
     $('#leftArrow').hide();
     $('#rightArrow').hide();
 }else {
     $('#rightArrow').show();
 }

 $('#rightArrow').click(function() {
     if(leftCSS < tablaWidth) {
         posActual += 1;
         /* LINE 20 OF THE CODE ********************************************/ 
         leftCSS = moverTabla(posActual, cantCeldas, tdWidth); //moverTabla function (moveTable in english) returns the leftCSS value because it's needed on this function for the 'if'
     }
 });
 $('#leftArrow').click(function() {
     if(posActual > 0) {
         posActual -= 1;
         leftCSS = moverTabla(posActual, cantCeldas, tdWidth);
     }
 });

});

function moverTabla(pos, cantidad, tdWidth) {
 var leftCSS = pos * tdWidth;
 $('.imagenesWrapper table').animate( {left: '-' + leftCSS +'px'}, 'slow');
 mostrarOcultarFlechas(pos, cantidad);
 return leftCSS;
}

function mostrarOcultarFlechas(pos, cantidad) {
 //mostrar-ocultar flecha izquierda
 if(pos==0)
     $('#leftArrow').hide();
 else if($('#leftArrow').css('display') == 'none')
     $('#leftArrow').show();
 //mostrar-ocultar flecha derecha
 if(pos==cantidad)
     $('#rightArrow').hide();
 else if($('#rightArrow').css('display') == 'none')
     $('#rightArrow').show();
}

Я понятия не имею, что происходит. Кто-нибудь будет достаточно любезен, чтобы оказать некоторую помощь или подсказку?

Заранее большое спасибо


person bysanchy    schedule 28.07.2010    source источник
comment
Вы уверены, что это код с ошибкой? Сообщение об ошибке, которое IE дает вам, похоже, не связано с этим кодом.   -  person jakeisonline    schedule 28.07.2010
comment
Я получаю эту ошибку только в IE7. Возможно, пришло время обновить jQuery до последней версии.   -  person jerone    schedule 28.07.2010
comment
учитывая расположение в строке, я подозреваю, что что-то передается jQuery недопустимо. Перейдите на неминимизированную версию для отладки (узнайте, на какой строке она находится, и соответствующий код :)   -  person Mark Schultheiss    schedule 29.07.2010
comment
Я могу ошибаться, но parseFloat($('.imagenesWrapper table').css('width'), 10); , parseFloat принимает строки, , 10 в конце может быть лучше, чем parseFloat($('.imagenesWrapper table').css('width')).toFixed(10);, возможно?   -  person Mark Schultheiss    schedule 29.07.2010
comment
10 в конце указывает parseFloat, что число, которое я хочу, является десятичным. Я прочитал это в книге «Learn jquery 1.3» =/ кажется, что ошибка в файле jquery   -  person bysanchy    schedule 29.07.2010


Ответы (2)


Я вижу, вы вычисляете несколько значений, чтобы получить значение leftCSS. Это всегда целое число? IE7 может не понравиться, если вы пытаетесь анимировать его, выполняя анимацию с использованием десятичного числа, то есть animate({left: 4.3102918px}). Просто мысль. Рассмотрим округление.

person Marko    schedule 28.07.2010
comment
эй, Марко, это может иметь какое-то отношение к этому. Я посмотрю на это. Спасибо за идею. - person bysanchy; 29.07.2010
comment
эй это снова я. Это не так. Ширина ‹td› всегда составляет 300 пикселей, а ширина ‹table› всегда составляет 300 пикселей * столько, сколько существует ‹td›. Таким образом, свойство «left» всегда кратно 300.. 600, 900, 1200, 1500. ОДНАКО, при анимации левое значение получает десятичные числа. Есть идеи, как это исправить? так как я не контролирую значения, которые он применяет к «слева» во время анимации. - person bysanchy; 29.07.2010

ОП здесь. Ну, проблема в архиве jQuery. Я только что скачал последний, несжатый, и строка изменилась с 20 на 4619 символов 4.

Я подошел к этой строке, и там есть символ «}», LOL ... я упоминал, что ненавижу Internet Explorer?

person bysanchy    schedule 28.07.2010
comment
Пожалуйста, добавляйте комментарии или редактируйте исходный вопрос, а не добавляйте примечания в качестве ответов, чтобы ваши обновления не были вытеснены другими ответами. - person Mark Schultheiss; 29.07.2010
comment
Указанная строка не всегда является строкой в ​​вашем файле js. Если я правильно помню, это строка и символ в отрендеренном коде. попробуйте отключить каждый скрипт и включить их один за другим. проверьте, когда он дает ошибки - person Nealv; 29.07.2010
comment
sry Марк, спасибо за комментарий. Nealv, хорошо, но все же единственный файл, который может содержать 4 тысячи строк, это jquery.js, который я только что скачал с jquery.com. Так что это ошибка.. я думаю: S - person bysanchy; 29.07.2010