pb mozilla dans script

Le
phil89
Bonsoir,

Sous Mozilla uniqument j'ai le message 'butprecsuiv has no properties
has no properties'
sur la ligne
if (butprecsuiv.offsetWidth>precsuivWidth)
precsuivWidth=butprecsuiv.offsetWidth

comment puis je contourner ce probleme spécifique à MOZILLA ?

Merci d'avance Philippe



<!-- contentType="text/html; charset=UTF-16" -->






<html>
<head>



<meta http-equiv=Accept-Language CONTENT="fr">
<META HTTP-EQUIV="Content-Type" content="text/html;
charset=ISO-8859-1" >

</head>
<body bgcolor="#cbdea8">



<div id="precsuiv" style="position: absolute; top: 0 px; left: 0 px;"
nowrap="nowrap">

<script type="text/javascript"><!--
function maskKeyPress(objEvent) { var iKeyCode, strKey;
if (document.all) { iKeyCode = objEvent.keyCode; } else
{ iKeyCode = objEvent.which; } strKey =
String.fromCharCode(iKeyCode); if( 13 == iKeyCode )
{self.location.href=rmax2('',inp.value,'rmax'); } }
// --></script>
<table cellspacing="0" cellpadding="0" ><tr><td style="border:1px
medium solid;font-family:arial;font-size:8pt" ><table cellspacing="0"
cellpadding="0" border="1" width="100%" ><tr><td style="border:1px
medium solid;font-family:arial;font-size:8pt"><input type="text"
name="inp" size=3 onkeypress="return maskKeyPress(event)" ></
td><td><button style="border:1px buttonface solid;font-
family:arial;font-size:8pt" id="precsuive1" accesskey="I"
onClick="self.location.href=rmax2('',inp.value,'rmax')"
onmouseup="this.style.border='1px buttonhighlight
outset';window.focus();" onselectstart="return false;"
onmouseover="this.style.border='1px buttonhighlight outset'"
onmouseout="this.style.border='1px buttonface solid'"
onmousedown="this.style.border='1px buttonhighlight inset'"><img src="=
/
infodev/images/rmax.png" width="24" height="24" border="0"
onmouseover="this.src='/infodev/images/rmax.png'"
onmouseout="this.src='/infodev/images/rmax.png'"></button></td></tr></
table></td><td>
<button style="border:1px buttonface solid;font-family:arial;font-size:
8pt" id="precsuive2" accesskey="M" onClick="window.print()"
onmouseup="this.style.border='1px buttonhighlight
outset';window.focus();" onselectstart="return false;"
onmouseover="this.style.border='1px buttonhighlight outset'"
onmouseout="this.style.border='1px buttonface solid'"
onmousedown="this.style.border='1px buttonhighlight
inset'"><table><tr><td><img src="/infodev/images/hcopy_nb.png"
width="24" height="24" border="0" onmouseover="this.src='/infodev/=

images/hcopy.png'" onmouseout="this.src='/infodev/images/
hcopy_nb.png'"></td><td>Impression</td></tr></table></button>
<button style="border:1px buttonface solid;font-family:arial;font-size:
8pt" id="precsuive3" accesskey="M" onClick="parent.location='mailto:=
'"
onmouseup="this.style.border='1px buttonhighlight
outset';window.focus();" onselectstart="return false;"
onmouseover="this.style.border='1px buttonhighlight outset'"
onmouseout="this.style.border='1px buttonface solid'"
onmousedown="this.style.border='1px buttonhighlight
inset'"><table><tr><td><img src="/infodev/images/courrier_nb.png"
width="24" height="24" border="0" onmouseover="this.src='/infodev/=

images/courrier.png'" onmouseout="this.src='/infodev/images/
courrier_nb.png'"></td><td>Courriel</td></tr></table></button>
<button style="border:1px buttonface solid;font-family:arial;font-size:
8pt" id="precsuive4" accesskey="I" onClick="location.href='http://
www.infodev.fr';" onmouseup="this.style.border='1px buttonhighlight
outset';window.focus();" onselectstart="return false;"
onmouseover="this.style.border='1px buttonhighlight outset'"
onmouseout="this.style.border='1px buttonface solid'"
onmousedown="this.style.border='1px buttonhighlight
inset'"><table><tr><td><img src="/infodev/images/maison.png"
width="24" height="24" border="0" onmouseover="this.src='/infodev/=

images/maison.png'" onmouseout="this.src='/infodev/images/
maison.png'"></td><td><u>I</u>nfodev</td></tr></table></button>
</td></tr></table></div>
<script language="JavaScript">
var butprecsuiv,precsuivWidth=0;
for(var iprecsuiv=1; iprecsuiv<=4; iprecsuiv++)
{
if (document.layers)
butprecsuiv=document.layers['precsuive'+iprecsuiv];
else
if (document.all)
butprecsuiv=document.all['precsuive'+iprecsuiv];
else
if (document.getElementById)
butprecsuiv=document.getElementById['precsuive'+iprecsuiv];
if (butprecsuiv.offsetWidth>precsuivWidth)
precsuivWidth=butprecsuiv.offsetWidth;
}
for(var iprecsuiv=1; iprecsuiv<=4; iprecsuiv++)
{
if (document.layers)
butprecsuiv=document.layers['precsuive'+iprecsuiv];
else
if (document.all)
butprecsuiv=document.all['precsuive'+iprecsuiv];
else
if (document.getElementById)
butprecsuiv=document.getElementById['precsuive'+iprecsuiv];
}
</script>

<br>
<br>
<br>
<CENTER>
<P>
<!-- $MVD$:spaceretainer() -->&nbsp;</P>
</CENTER>
</BODY>
</HTML>
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
SAM
Le #775964
Bonsoir,

Sous Mozilla uniqument j'ai le message 'butprecsuiv has no properties
has no properties'
sur la ligne
if (butprecsuiv.offsetWidth>precsuivWidth)
precsuivWidth=butprecsuiv.offsetWidth...

comment puis je contourner ce probleme spécifique à MOZILLA ?


Bon, soit tu reformattes ton code qu'on puisse le lire
soit tu files une url où c'est consultable.

'has no properties' veut en général dire que l'objet n'existe pas pour Mozz
par exemple quand on l'appelle par

document.getElementById('monObjet')

alors que le malheureux n'a pas d'id ...

Penser à donner un id aux éléments du DOM

Le laxiste IE se contente de 'name' qui pour lui est kifkif 'id'
le bêta !

Pour le cas présent c'est :
document.getElementById('precsuive'+iprecsuiv);
et non pas :
document.getElementById['precsuive'+iprecsuiv];

getElementById() est une fonction et non pas une collection

Ceci dit en passant, ton JS ne fait au mieux que :
butprecsuiv = document.getElementById('precsuive4');
il ne repèrera que le bouton 4

--
sm

phil89
Le #1149307
Bonjour,

J'ai remplace la fonction, je n'ai plus d'erreur, mais pourquoi
seulement le precsuive4, j'ai bien une boucle ?
SAM
Le #1150974
Bonjour,

J'ai remplace la fonction, je n'ai plus d'erreur, mais pourquoi
seulement le precsuive4, j'ai bien une boucle ?



oui, en effet.

et on doit obtenir finalement la largeur la plus grande de tous les boutons.

phil89
Le #1157730
Oui par contre l'affectation sous Firefox pose probleme, cela
fonctionne sous IE
J'ai essaye
butprecsuiv.style.pixelWidth=precsuivWidth;
et
butprecsuiv.style.pixelWidth=precsuivWidth+"px";

sans succes
SAM
Le #1159244
Oui par contre l'affectation sous Firefox pose probleme, cela
fonctionne sous IE
J'ai essaye
butprecsuiv.style.pixelWidth=precsuivWidth;
et
butprecsuiv.style.pixelWidth=precsuivWidth+"px";

sans succes



Attention !

1) pixelWidth : quoi ça être ?
2) si les boutons sont un A ou un SPAN
on ne peut leur affecter une largeur
il faut préalablement les modifier en BLOCK

Démo :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="fr">
<head>
<title>unifier boutons</title>
<script type="text/javascript">

function largeurBoutons() {
// rappel : offsetWidth = largeur + padding + border
// styles bordures et padding des boutons
var bord_width = 4;
var espace = 9;
// retrouver le bon bouton
var bouton = function(x) {return document.getElementById('bout_'+x);};
// largeur max
var max = 0;
for(var i=1; i<6; i++)
if(bouton(i) && bouton(i).offsetWidth && bouton(i).offsetWidth>max)
max = bouton(i).offsetWidth;
max = max - ( bord_width *2) - (espace *2);
// donner largeur maxi aux boutons
if(max > 0) for(var i=1; i<6; i++)
if(bouton(i)) {
bouton(i).style.display = 'block';
bouton(i).style.width = max + 'px';
}
alert(max);
}
window.onload = largeurBoutons;
</script>
<style type="text/css">
#menu a { padding: 4px 9px; border: 4px solid;
text-decoration: none; text-align: center;}
</style>
</head>
<body>
<div id="menu">
<p><a href="#" id="bout_1">menu 1</a></p>
<p><a href="#" id="bout_2">menu 2 un peu long</a></p>
<p><a href="#" id="bout_3">menu 3 plus court</a></p>
<p><a href="#" id="bout_4">menu 4 beaucoup plus long</a></p>
<p><a href="#" id="bout_5">menu 5</a></p>
</div>
</body>
</html>

--
sm

phil89
Le #1159929
Ce sont des boutons de type <button

Merci
Publicité
Poster une réponse
Anonyme