Javascript et undefined indesirable :s

Fermé
zakuzasama Messages postés 135 Date d'inscription dimanche 12 mars 2006 Statut Membre Dernière intervention 11 avril 2015 - 12 avril 2007 à 10:05
 js - 13 avril 2010 à 00:28
bonsoir a tous
j'ai un petit probleme avec plusieurs script qui m' affiche un undefinided
j'ai declaré toutes mes variables mais rien n y fait
je vous met un code qui m'en met un si vous pouviez me dire ou est l erreur que je comprenne d 'ou ca vient
var cat;
function menu2(page1,page2)
{ 

if(page1=="site"){cat = new Array('news','livredor','forum','staff','aide','faq');}
else if(page1=="telechargement"){cat = new Array('ddl','torrent','emule','wallpaper','divers','divers');}
else if(page1=="fansub"){cat = new Array('teams','admin','sorties','divers','divers','divers');}
else if(page1=="membre"){cat = new Array('mp','profil','news','wallpapers','divers','divers');}
else {cat = new Array('','','','','','');}


document.getElementById('menu2').innerHTML =""; 
var liens;
liens += '<div class="menu2_a" id="dl"></div>';

var nbr=cat.length;

for(var i=0;i<nbr;i++) 
{
var lien_menu="javascript:ajax('stat','"+page1+"','"+cat[ i]+"');";

liens += '<div class="menu2_b"><a href="'+lien_menu+'">'+cat[ i]+'</a></div>';
}
document.getElementById('menu2').innerHTML += liens; 
}
 



j'ai trouve une explication mais etant noob en javascript je patoge un peu

undefined
Variable pas encore définie, après destruction de l'objet qu'elle référençait (impossible dans le noyau mais cela arrive pour des objets HTML), ou après destruction de la variable (pas de l'objet référencé) grâce au mot-clé delete.
merci d'avance
A voir également:

2 réponses

Ne générez pas le contenu de vos pages dynamiquement avec du javascript. Proposez une version "statique" générée avec du PHP par ex., et le javascript vient juste "intercepter" les liens pour en faire des requêtes ajax. Comme ça s'il n'y a pas de javascript, le site marche quand même.

Sinon, voilà comment faire avec un tableau à 2 dimensions (cat[nom_page][i] = nom_catégorie).

function menu2(page1, page2) {

var cat = {
  site: ['news','livredor','forum','staff','aide','faq'],
  telechargement: ['ddl','torrent','emule','wallpaper','divers','divers'],
  fansub: ['teams','admin','sorties','divers','divers','divers'],
  membre: ['mp','profil','news','wallpapers','divers','divers']
};


document.getElementById('menu2').innerHTML ="";
var liens;
liens += '<div class="menu2_a" id="dl"></div>';

if (cat[page1] != undefined) { // Si les catégories existent pour cette page
  var nbr=cat[page1].length;
  
  for(var i=0;i<nbr;i++) {
    var lien_menu="javascript:ajax('stat','"+page1+"','"+cat[page1][i]+"');";
    
    liens += '<div class="menu2_b"><a href="'+lien_menu+'">'+cat[page1][i]+'</a></div>';
  }
  
  document.getElementById('menu2').innerHTML += liens; 
} // Fin "Si les catégories existent pour cette page"

} // Fin function menu2(page1, page2)
2
Salut, bon il est sans doute trop tard pour te répondre, mais ça pourra toujours aider ceux qui tomberont sur ton post.J'ai été confronté au même problème et après 2h de moulinage à vide, j'ai trouvé: quand tu crées une variable dans une condition, celle-ci a pour portée la condition seulement et est donc supprimée à la sortie du if... plus ou moins (j'ai vu des cas où ça marche quand même...)
La solution serait donc pour toi de faire un tableau à deux entrées et de remplacer les titres de tes pages par un numéro
1