2010-03-01 6 views
0

I love IE :)Invalid argument dans IE

OK, donc je l'ai téléchargé un scrip appelé TinySlidshow (http://www.leigeber.com/2008/12/javascript-slideshow/) fonctionne parfaitement en FF puis j'ai essayé IE et la bôme eu une erreur d'argument invalide comme 160.

La ligne 160 est compressée, ce à quoi elle ressemble par défaut.

if(oh==h){clearInterval(e.si)}else{if(oh!=h){e.style.height=oh+(Math.ceil(Math.abs(h-oh)/s)*hd)+'px'}} 

je l'ai cassé pour que je puisse trouver exactement ce qu'il était et il est descendu à cette ligne:

e.style.height=oh+(Math.ceil(Math.abs(h-oh)/s)*hd)+'px' 

La ligne ci-dessus est tout à fait un peu l'ajout/division et la multiplication sur une ligne afin Je me suis cassé que jusqu'à alors ma ocde semblait un peu comme ceci:

e.style.height = new_hight + 'px' 

Mais il m'a donné encore l'erreur sur la ligne ci-dessus. J'ai essayé de mettre un point-virgule à la fin et il ne fonctionne pas non plus ...

Le script se trouve ici au moment:

http://www.romarkdesign.com.au/portfolio2.html

Toutes les idées que je dois changer pour faire fonctionner IE?

+2

Avez-vous vérifié pour voir si un paramètre supposé être un nombre finit par être un NaN dans IE? Dans certaines situations, Firefox vous donnera une valeur numérique lorsque vous demanderez "height" ou "width", mais IE vous donne simplement "auto" ou quelque chose comme ça. – Pointy

+3

Ne croyez pas les numéros de ligne, c'est à dire vous donne. –

+0

Vous ... vous ... vous aimez IE?! ... Oh. Sarcasme. Je l'ai. – Matchu

Répondre

1

Même problème ici. Après l'avoir regardé plusieurs fois dans le débogueur, j'ai remarqué que le motif de la hauteur était réglé sur -1px chaque fois que l'erreur apparaissait.

Je l'ai peut-être réparé ... mais est IE et enclins à s'envoler du manche malgré mes bonnes intentions.

Vous devez ajouter "if (oh < 2) {oh = 2};" après la parenthèse d'ouverture de l'instruction if (oh! = h).

Change:

if(oh==h){clearInterval(e.si)}else{if(oh!=h){e.style.height=oh+(Math.ceil(Math.abs(h-oh)/s)*hd)+'px'}} 

à:

if(oh==h){clearInterval(e.si)}else{if(oh!=h){if(oh<2){oh=2};e.style.height=oh+(Math.ceil(Math.abs(h-oh)/s)*hd)+'px'}} 

La théorie est que TINY n'aime pas les valeurs 'px' négatives, donc je mis oh à 2 si elle est inférieure à 2 entrer dans l'énoncé du problème. Cela force l'instruction à évaluer à 1 à sa valeur la plus basse. '1px' semble rendre TINY heureux dans IE ... jusqu'ici.

Questions connexes