Erreur sur la page: la variable a la valeur Null

Eléphant du PHP | 246 Messages

20 oct. 2006, 03:49

Salut tout le monde !

J'ai un léger problème. J'avais trouvé un petit script sur le net pour faire un "menu". Quand on coche une checkbox un menu en dessou apparait.

Voilà :
<style>
span.menu { display: block; }
span.ferme {display: none;}
</style>
<script>
function twAjusteMenu(id) {
// Compatible IE et famille Mozilla/Netscape et Safari
// Incompatible mais utilisable avec Netscape 4.7 et Opera !!
element = document.getElementById(id);
element.className = (element.className.toLowerCase() == 'menu'?'ferme':'menu'); 
}

onload = function() {
twAjusteMenu('sousmenu1');
twAjusteMenu('sousmenu2');

// Recherche News
twAjusteMenu('sousmenu3');
twAjusteMenu('sousmenu4');
twAjusteMenu('sousmenu5');
twAjusteMenu('sousmenu6');
}
</script>
Ensuite le menu c'est :
<span class="ferme" id="sousmenu1">   </span>
Aucun problème, tout fonctione ! Le petit problème c'est que lorsque je suis sur une page qui contient pas ce menu (mais qui a quand même la fonction) IE me dit qu'il y a une erreur sur la page :
'element' a la valeur Null ou n'est pas un objet
Bon j'avoue que c'est pas très grave, mais j'aime bien avoir une page propre sans erreur ^^

La seule solution que j'ai trouvé, c'est de mettre les menu sur chaque page comme ça 'element' n'est plus null :
<span class="ferme" id="sousmenu1"> </span>
<span class="ferme" id="sousmenu2"> </span>
<span class="ferme" id="sousmenu3"> </span>
<span class="ferme" id="sousmenu4"> </span>
<span class="ferme" id="sousmenu5"> </span>
<span class="ferme" id="sousmenu6"> </span>
Pas très joli tout ça ^^ J'y connais pas grand chose en javascript. C'est pourquoi je poste ici, pour vous demandé si il n'y aurait pas une autre solution qui serait plus sympa quand même ?

Merci d'avance :D

ViPHP
ViPHP | 1961 Messages

20 oct. 2006, 04:07

Bonsoir,

Quelle est la raison d'être de la fonction s'il n'y-a pas de menu, vu que la foction ne gère que le menu?
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

20 oct. 2006, 15:41

Tu peux aussi vérifier l'existance du menu en question lors de l'appel à la fonction :

Code : Tout sélectionner

function twAjusteMenu(id) { element = document.getElementById(id); if(element) // seulement si l'élément id existe element.className = (element.className.toLowerCase()== 'menu'?'ferme':'menu'); }
if(document.getElementById(id)) va renvoyer faux si l'élément n'existe pas, le code suivant ne sera pas exécuté et tu n'auras pas de message d'erreur :)

Eléphant du PHP | 246 Messages

20 oct. 2006, 22:27

Bonsoir,

Quelle est la raison d'être de la fonction s'il n'y-a pas de menu, vu que la foction ne gère que le menu?
Parce que le script est dans la page index.php. Ensuite avec les lien index.php?page=blabla j'inclu des page.

Donc dans certaine page que j'inclu il y a des menu, mais pour les autres, y'en a pas ^^

Ryle, merci ça marche ! J'avais essayé mais aparament j'avais fait une erreur de syntaxe :D

:D