11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous,

Je tente de faire un menu un peu spécial avec JQuery. Tout fonctionne avec Firefox 3.0.3, en revanche IE7 me renvoit l'erreur classique

Objet Attendu à la ligne 11 :
 $("#cat1").click(function () {  




<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>test</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link type="text/css" rel="stylesheet" href="css/styles.css" />
<link type="text/css" rel="stylesheet" href="css/menu.css" />
<script type="application/javascript" src="js/jquery-1.2.6.js" ></script>
<script type="text/javascript" language="javascript">
function init(){
	$("#cat1").click(function () {    // Objet attendu
      showCat("#cat1");
    });

	$("#cat2").click(function () { 
      showCat("#cat2");
    });
	
	$("#cat3").click(function () { 
      showCat("#cat3");
    });
};

function showCat(elem){
	if ($(elem + " div:first").is(":hidden")) {
      $(elem + " div").slideDown("slow");
    } else {
      $(elem + " div").hide();
    }
};
</script>
</head>
<body onload="init();">


J'ai remarqué que la ligne d'erreur change lorsque je change le type de la balise script :
<script type="text/javascript" language="javascript">

en
<script type="application/javascript" language="javascript">


la même erreur passe en ligne 33 au niveau de la balise <body onload="init();">

Il y a donc une diffférence entre les 2 déclarations de type apparemment ..


Merci de votre aide précieuse Smiley cligne
Modifié par popovitch (19 Oct 2008 - 19:09)
"application/javascipt" n'existe pas si mon souvenir est bon. "application/x-javascript" est parfois utilisé, mais le type recommandé serait plutôt "text/javascript".

Pour le problème lui-même: pourquoi ne pas utiliser la manière recommandée par jQuery pour exécuter une fonction au chargement de la page, plutôt qu'un appel de la fonction sur le onload de body?
(Cf. la documentation de jQuery si ça n'est pas clair pour toi.)
Modifié par Florent V. (19 Oct 2008 - 17:18)
Merci Florent c'est pile ça

Voici le bon code :

<script type="text/javascript" src="js/jquery-1.2.6.js" ></script>
<script type="text/javascript" language="javascript">
$(document).ready(function() {

	$("#cat1").click(function () { 
      showCat("#cat1");
    });

	$("#cat2").click(function () { 
      showCat("#cat2");
    });
	
	$("#cat3").click(function () { 
      showCat("#cat3");
    });
});

function showCat(elem){
	if ($(elem + " div:first").is(":hidden")) {
      $(elem + " div").slideDown("slow");
    } else {
      $(elem + " div").hide();
    }
};
</script>