Bonjour,
Le problème décrit ici est visible sur cette page :
http://turbinus.free.fr/css-lab/pb-undefined.html
Une fonction javascript recoit en paramètre le Id d'un élément de la page ou bien this (objet courant).
Le but est de pouvoir départager les 2 cas, cela fonctionne sans problème sous Firefox avec le code suivant :
Qui veut dire en gros, si la function a été appelée sans paramètre, elle doit utiliser l'objet qui l'a appelé (this).
Ce test fait planter IE qui affiche une erreur "href a une valeur NULL ou n'est pas un objet".
J'ai deux questions :
1 - Comment faire marcher ce code à la fois sous IE et sous FF?
2 - Existe-t-il une autre méthode pour tester l'absence de paramètre ?
Le code de page :
Le code javascript :
Modifié par pat665 (06 Nov 2005 - 17:35)
Le problème décrit ici est visible sur cette page :
http://turbinus.free.fr/css-lab/pb-undefined.html
Une fonction javascript recoit en paramètre le Id d'un élément de la page ou bien this (objet courant).
Le but est de pouvoir départager les 2 cas, cela fonctionne sans problème sous Firefox avec le code suivant :
function newSrc(a)
{
if (a.href == undefined) a = this;
Qui veut dire en gros, si la function a été appelée sans paramètre, elle doit utiliser l'objet qui l'a appelé (this).
Ce test fait planter IE qui affiche une erreur "href a une valeur NULL ou n'est pas un objet".
J'ai deux questions :
1 - Comment faire marcher ce code à la fois sous IE et sous FF?
2 - Existe-t-il une autre méthode pour tester l'absence de paramètre ?
Le code de page :
<body>
<h1>Javascript : Test undefined sous IE</h1>
<p id="menu"><a href="img1.jpg">Test1 appel avec this</a></p>
<p><a href="javascript:changeImgSrc();">Test2 appel avec Id</a></p>
<div id="photo"><img src="img2.jpg" /></div>
<a href="javascript: window.location.reload()">Reset</a>
</body>
Le code javascript :
var img_photo;
var a_link;
function newSrc(a)
{
alert("fonction newSrc");
if (a.href == undefined) a = this;
img_photo.src = a.href;
return false;
}
function changeImgSrc()
{
newSrc(a_link);
}
function changeSrc()
{
var menu = document.getElementById('menu') ;
var a_list = menu.getElementsByTagName('a') ;
a_link = a_list[0];
var div_photo = document.getElementById('photo') ;
img_photo = div_photo.getElementsByTagName('img')[0] ;
a_link.onclick = newSrc ;
}
// activation au chargement de la page
window.onload = changeSrc ;
Modifié par pat665 (06 Nov 2005 - 17:35)