2009-11-11 6 views
2

je tire mes poils sur une erreur d'argument non valide dans IE7, peut-être tous les IE de ...IE Argument non valide Erreur - indique qu'il est une erreur dans jQuery, mais je ne pense pas

Le site est : http://www.karencaldwelldesign.com/fashion

IE dit que c'est une erreur sur la ligne 12, mais si j'ouvre Script Debugger, il dit que le problème est avec du code dans jQuery. Je n'achète pas ça.

Alors, je regardais mon script (http://www.caldwellsnyder.com/__data/assets/js_file/0003/5943/kc-gallery.js) et la ligne 65 semble être le problème:

données
data = '<div id="content'+id+'" class="content">'+data+'</div>'; 

est retournée par la fonction .ajax() jQuery $, mais je devais l'envelopper avec un div numéroté supplémentaire.

En particulier, c'est la variable id qui provoque l'erreur d'argument invalide, mais je ne sais pas pourquoi! La var est juste un nombre qui s'incrémente. Supprimer le var de cette ligne permet de charger la page parfaitement, mais j'ai vraiment besoin d'incrémenter l'ID de cette façon.

Quelqu'un a-t-il une idée de la raison pour laquelle cette variable simple pourrait causer un argument invalide dans IE?

+0

'id = id + '';' ceci ne droit de consultation pour incrémenter id – barkmadley

+0

Désolé , c'était juste une partie de mes tests que j'ai oublié d'enlever. Le bug est toujours un problème sans cela. –

+0

@Nic: dans une partie de votre code, vous passez 'data' comme paramètre de contexte à' $ ', et dans un autre, vous le concaténez avec une chaîne. Qu'est-ce que 'data' contient exactement? –

Répondre

2

D'une manière ou d'une autre, vous essayez de définir une largeur de -5px; IE n'aime pas ça. Cette valeur provient de la ligne $this.css(cssToApply); dans JScrollPane.js où il obtient de calculer la variable realPaneWidth:

var realPaneWidth = paneWidth - settings.scrollbarWidth - settings.scrollbarMargin - p; 

Dans ce, paneWidth et settings.scrollbarWidth tous deux égaux 676 et settings.scrollbarMargin est 5, vous donnant -5 (p est zéro).

Dans kc-gallery.js, il semble que vous initialisiez jScrollPane avec la valeur 676 pour scrollbarWidth dans la fonction applyScroll. Ceci est appelé à partir de la fonction setInterval affectée à la variable check_images, et qui nous emmène tout le chemin de la pile d'appel à partir de l'endroit où IE effectivement des erreurs sur le réglage width à -5px. Donc, c'est certainement lié à la façon dont vous utilisez JScrollPane. Vous voudrez peut-être consulter la documentation pour des conseils - je n'ai jamais utilisé ce plugin moi-même, donc j'ai peur que je ne peux pas aider avec ça. Cependant, une valeur scrollbarWidth de 676 semble un peu excessive ...according to the JScrollPane docs:

scrollbarWidth [entier] - la largeur de la création de défilement en pixels (par défaut 10)

+0

Vous avez raison, c'est définitivement le problème ici. Mais, j'ai vraiment besoin d'avoir la largeur de la barre de défilement si large, parce que je voudrais transformer une image entière dans la zone de défilement, donc en cliquant sur la moitié inférieure vous permettrait de faire défiler l'image vers le bas. –

+0

Si la barre de défilement est aussi large, il n'y aura plus d'espace pour afficher l'image. Imaginez que vous définissiez la barre de défilement de la fenêtre du navigateur pour occuper toute la largeur de la fenêtre: vous ne seriez pas en mesure de voir le contenu, juste une barre de défilement extrêmement large où le contenu devrait être. Cependant, si vous soustrayez 'settings.scrollbarMargin' de la valeur que vous passez en 'scrollbarWidth', vous éviterez de déclencher l'erreur IE, car vous définirez' realPaneWidth' à zéro. – NickFitz

+0

J'ai eu un problème similaire - Je l'ai corrigé en vérifiant si la nouvelle largeur qui était dynamiquement définie était en fait un nombre: if (! IsNaN (emWidth)) {} –

0

L'erreur que vous voyez provient de jQuery lorsque vous tentez de définir un attribut DOM sur une valeur non valide. Par exemple, essayez de définir un index z sur NaN ou une chaîne. IE erreurs sur ce point où Firefox et d'autres navigateurs ignorent simplement la valeur.

Vous pouvez voir un exemple de ce en laissant tomber la ligne suivante à la console sur cette page dans IE8 ou en utilisant Jash pour les versions antérieures: jQuery("#header").css("z-index", NaN);

Il semble que votre glob_index variable est de plus en Undefined à un moment donné, donc jQuery erreurs lors de la tentative de définir l'index z d'un noeud DOM à cela.

Questions connexes