Compatibilité du Javascript sous IE6 et Mozilla !

Compatibilité du Javascript sous IE6 et Mozilla ! - HTML/CSS - Programmation

Marsh Posté le 02-06-2005 à 16:50:45    

bonjour, voila j'ai un script qui marche sur ie6 mais absolument pas sous mozilla, voila le script:
 

Citation :


var b = new Array(48);
var n=0;
var totale = 0;
 
 
for(c=0;c<=49;c++){
 b[c]=0; }
 
function ClickOn(num,champ)
 {
 
 if (totale >5 && b[num]==0)
     {
        alert('Desolé, vous ne pouvez selectioner que 6 numeros');
        }
 else if(totale <= 6 && b[num]==0)
  {
  champ.background = 'set_boules/boule_souris_click.gif';
  if(document.form_loterie.num.value=="" ) {document.form_loterie.num.value=num+"-"; }
  else { document.form_loterie.num.value=document.form_loterie.num.value+num+"-"; }
  b[num]=1;
        totale++;
  }
 
 else if (b[num]==1)
  {
  champ.background = 'set_boules/boule.gif';
  b[num]=0;
        numero = num+"-";
 
        var grille = document.form_loterie.num.value;
  yop = grille.replace(numero, "" );
        document.form_loterie.num.value = yop;
 
        totale--;
  }
 
}
 
 
function SourisOn(num,champ){
 if(b[num]==0)
  {
  champ.background = 'set_boules/boule_souris_on.gif';
 
  }
}
 
 
function SourisOut(num,champ){
 if(b[num]==0)
  {
  champ.background = 'set_boules/boule.gif';
  }
}
 
function doSubmit(bannerID){
  if (!bannerID) { alert("Vous devez cliquer sur un bandeau pour valider votre partie." ); }
        else if (totale !=6) { alert("Vous devez sélectionner 6 numéros." );}
     else {
 
   window.open('wait.php',"_blank",'width=290,height=250');
   document.form_loterie.annonceur.value = bannerID;
   document.form_loterie.submit();
     }
 
}
 
function reset(){
 
 document.form_loterie.num.value = "";
    totale=0;
 
     for (i;i<=49;i++)
        {
         document.i.background = 'set_boules/boule.gif';
        }
 
}
 


Message édité par angel92 le 02-06-2005 à 16:51:36
Reply

Marsh Posté le 02-06-2005 à 16:50:45   

Reply

Marsh Posté le 02-06-2005 à 16:54:19    

C'est du vieux Javascript qui ne devrait plus etre utilisé.
 
Pour acceder a un objet de ton document tu as plein de mthodes comme :
document.getElementById, document.getElementsByTagName etc ...

Reply

Marsh Posté le 02-06-2005 à 17:01:41    

Reply

Marsh Posté le 02-06-2005 à 17:10:35    

donc en gros pour modifier le fond d'une cellule ?
c'est plus:
champ.background = 'set_boules/boule_souris_click.gif';  
 
je doit mettre quoi a la place ?
 
sachant que "champs" c un parametre d'entré d'une fonction et qui devrait etre "this".

Reply

Marsh Posté le 02-06-2005 à 17:14:14    

est ce que si chaque element a un id du type 1 2 ... 48
 
je met document.getElementbyId("1" ).background ? ?

Reply

Marsh Posté le 02-06-2005 à 17:15:54    

<div id="champ"></div>
 
document.getElementByID('champ').style.setProperty('background-color','pink','');

Reply

Marsh Posté le 02-06-2005 à 17:19:05    

lol Waw !
 
Ca a bien changé en fait !
Merci beaucoup pour ton aide, je vais essayer des que possible ca :
 
document.getElementByID('champ').style.setProperty('background','source_de_limage.jpg','');
 
ca devrait marcher ?

Reply

Marsh Posté le 02-06-2005 à 17:27:45    

non
style.setProperty('background-image','url(source_de_image)')
 
ou
style.backgroundImage = 'url(source_de_image)'
 
Faut que tu apprennes les CSS aussi :o


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 02-06-2005 à 17:36:31    

Faire gaffe au 3eme argument de setProperty (dont je me souviens plus la signification d'ailleurs) qui doit etre une chaine (nulle si pas utilisé)

Reply

Marsh Posté le 02-06-2005 à 17:40:16    

D'ailleurs je viens de vérifier, setProperty n'est pas disponible dans MSIE, donc faut pas l'utiliser [:klem3i1]


Message édité par masklinn le 02-06-2005 à 17:41:15

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 02-06-2005 à 17:40:16   

Reply

Marsh Posté le 02-06-2005 à 18:50:22    

A titre d'illustration, svp, qui peut m'indiquer l'équivalent moderne de :
 
document.forms["mon_formulaire"].elements[mon_bouton_radio](numero_d_index).checked = false;
 
("mon_formulaire" est directement le nom du formulaire, alors que mon_bouton_radio est une variable qui contient le nom d'un groupe de boutons radios parmi d'autres.)
 
Cette instruction périmée fonctionne très bien sous IE6, mais apparemmment pas du tout sous Firefox.
D'autres chose ont changé ? J'ai un doute sur la boucle
 
for (i = debut; i < fin; i++) {
 
qui me fait un peu n'importe quoi sous Firefox. (Mais qui marche bien sous IE6, bien sûr).
 
Je sais, c'est du vieux Javascript, mais moi aussi je suis vieux. Le modernisme m'échappe un peu. ;)
 
PS : évidemment, il faut que cela fonctionne encore sous IE6.  

Reply

Marsh Posté le 02-06-2005 à 18:56:14    

tu met un id sur chaque case à cocher :
ex :  
<input type="checkbox" id="cbox1">
<input type="checkbox" id="cbox2">
<input type="checkbox" id="cbox3">
 
et le code pour y acceder devient :  
document.getElementById('cbox' + numero_d_index).checked = false;  
 

Reply

Marsh Posté le 03-06-2005 à 08:48:40    

putain ! que de problemes que de problemes !
Y a toujours un truc qui va pas niveau compatibilité !

Reply

Marsh Posté le 03-06-2005 à 10:56:07    

je croi que j'ai du mal avec les css en effet !
 
et sui au passage de la souris je veux que le texte change de couleur , sachant que la balise font est identifiée par un id je met ca ?:
 
document.getElementById(id).style.font = 'color(white)';

Reply

Marsh Posté le 03-06-2005 à 10:56:53    

non
 
document.getElementById(id).style.color = 'white';


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 03-06-2005 à 11:01:36    

merci Masklinn !
T'es vraiment le plus rapide de l'ouest pour répondre !

Reply

Marsh Posté le 03-06-2005 à 11:27:10    

gatsusat a écrit :

tu met un id sur chaque case à cocher :
ex :  
<input type="checkbox" id="cbox1">
<input type="checkbox" id="cbox2">
<input type="checkbox" id="cbox3">
 
et le code pour y acceder devient :  
document.getElementById('cbox' + numero_d_index).checked = false;


 
Il ne s'agit pas de checkbox mais de boutons radios.
Quelque chose du genre :
 
<input type="radio" id="choix1" value="salade">
<input type="radio" id="choix1" value="tomate">
<input type="radio" id="choix1" value="radis">
 
<input type="radio" id="choix2" value="rouge">
<input type="radio" id="choix2" value="vert">
<input type="radio" id="choix2" value="bleu">
 
<input type="radio" id="choix3" value="1000">
<input type="radio" id="choix3" value="2000">
<input type="radio" id="choix3" value="3000">
 
etc.
 
(ou
<input type="radio" name="choix1" id="choix" value="salade">
<input type="radio" name="choix1" id="choix" value="tomate">
<input type="radio" name="choix1" id="choix" value="radis">
etc. ?)
 
Je ne peux donc pas écrire dans ma fonction
 
'choix1' + numero_d_index,
 
car je cherche
choix1(numero_d_index)
ou
choix2(numero_d_index)
ou
choix3(numero_d_index)
etc.
 
Ce qui fonctionne en partie : (choix = 'choix1', ou 'choix2' ou 'choix3', etc.)
document.getElementById(choix).checked = false;
Sauf que ça ne marche que pour les boutons d'index 0. Donc seul le premier bouton du groupe est désélectionné.
 
document.getElementById(choix[numero_d_index]).checked = false;
ne marche pas. Message : document.getElementById(choix[numero_d_index]) has no properties
 
document.getElementById(choix(numero_d_index)).checked = false;
ne marche pas. Message : choix is not a function
 
document.getElementById(choix).options[numero_d_index].checked = false;
ne marche pas. Message : document.getElementById(choix).options[numero_d_index] has no properties
 
document.getElementById(choix).options[numero_d_index].checked = false;
ne marche pas. Message : document.getElementById(choix).options is not a function
 
etc.
 
Pour l'instant, j'ai plus d'imagination que d'efficacité. :(


Message édité par Kiosquec le 03-06-2005 à 14:23:33
Reply

Marsh Posté le 03-06-2005 à 13:23:23    

Un id doit etre unique dans tout le document (ou page si tu preferes).

Reply

Marsh Posté le 03-06-2005 à 15:55:56    

Merci. Je venais justement de le tester, et ça marche.
 
Objectif : classer diverses objets concurrents sans autoriser d'ex-aequos.
 
La solution à mon problème est donc :
 
<html>
<head>
<title>Classement</title>
<meta name="author" content="KiosqueC">
 
<script language="javascript"><!--
  function ma_fonction(numero_question_en_cours, index_reponse) {
    for (i = 1; i < 5; i++) {
      if (i != numero_question_en_cours) {
        bouton = "choix" + i + "_" + index_reponse;
     if (document.getElementById(bouton).checked) {
          document.getElementById(bouton).checked = false;
        }
      }
    }
  }
--></script>
</head>
 
<body>
<h1>Classement</h1>
<form name="classement" action="classement.html" method="post">
 
Classez par ordre de préférence : <br />
 
-1-----2------3-----4-------------<br />
<input type="radio" name="choix1" id="choix1_1" value="1" onClick=ma_fonction("1","1" )>
&nbsp;&nbsp;&nbsp;  
<input type="radio" name="choix1" id="choix1_2" value="2" onClick=ma_fonction("1","2" )>  
&nbsp;&nbsp;&nbsp;  
<input type="radio" name="choix1" id="choix1_3" value="3" onClick=ma_fonction("1","3" )>
&nbsp;&nbsp;&nbsp;  
<input type="radio" name="choix1" id="choix1_4" value="4" onClick=ma_fonction("1","4" )>
&nbsp;&nbsp;&nbsp;  
Le rouge <br />
 
<input type="radio" name="choix2" id="choix2_1" value="1" onClick=ma_fonction("2","1" )>  
&nbsp;&nbsp;&nbsp;  
<input type="radio" name="choix2" id="choix2_2" value="2" onClick=ma_fonction("2","2" )>  
&nbsp;&nbsp;&nbsp;  
<input type="radio" name="choix2" id="choix2_3" value="3" onClick=ma_fonction("2","3" )>  
&nbsp;&nbsp;&nbsp;  
<input type="radio" name="choix2" id="choix2_4" value="4" onClick=ma_fonction("2","4" )>
&nbsp;&nbsp;&nbsp;  
Le jaune <br />
 
<input type="radio" name="choix3" id="choix3_1" value="1" onClick=ma_fonction("3","1" )>  
&nbsp;&nbsp;&nbsp;  
<input type="radio" name="choix3" id="choix3_2" value="2" onClick=ma_fonction("3","2" )>  
&nbsp;&nbsp;&nbsp;  
<input type="radio" name="choix3" id="choix3_3" value="3" onClick=ma_fonction("3","3" )>  
&nbsp;&nbsp;&nbsp;  
<input type="radio" name="choix3" id="choix3_4" value="4" onClick=ma_fonction("3","4" )>
&nbsp;&nbsp;&nbsp;  
Le bleu <br />
 
<input type="radio" name="choix4" id="choix4_1" value="1" onClick=ma_fonction("4","1" )>  
&nbsp;&nbsp;&nbsp;  
<input type="radio" name="choix4" id="choix4_2" value="2" onClick=ma_fonction("4","2" )>  
&nbsp;&nbsp;&nbsp;  
<input type="radio" name="choix4" id="choix4_3" value="3" onClick=ma_fonction("4","3" )>  
&nbsp;&nbsp;&nbsp;  
<input type="radio" name="choix4" id="choix4_4" value="4" onClick=ma_fonction("4","4" )>
&nbsp;&nbsp;&nbsp;  
Le vert <br />
 
<input type="submit" value="Envoyer">
&nbsp;&nbsp;&nbsp;  
<input type="reset" value="Oups !">
 
</form>
 
</body>
</html>
 
Le paramètre name détermine les groupes de boutons. Il est commun à tout le groupe.
Le paramètre ID est unique pour chaque bouton.
 
Copiez le source et sauvez-le sous classement.html
Il fonctionne sous IE6 et Firefox.
 

Reply

Marsh Posté le 03-06-2005 à 16:42:14    

Qu'est-ce que j'aimerai bien voir des gens comme ca plus souvent, il recopie le code à la fin. Il ne manquerai plus qu'il édite son premier post en mettant [RESOLU] devant son tire :D


---------------
http://www.alsacreations.com , http://www.openweb.eu.org. Mon CV : http://cv.roane-irkana.net/. Exemple à ne surtout pas suivre : www.worldinternet.be
Reply

Marsh Posté le 04-06-2005 à 14:50:05    

plainsofpain a écrit :

Qu'est-ce que j'aimerai bien voir des gens comme ca plus souvent, il recopie le code à la fin. Il ne manquerai plus qu'il édite son premier post en mettant [RESOLU] devant son tire :D


Sauf que la question initiale n'est pas de moi. Je n'ai fait que prendre le train en marche avec un problème apparenté. :sol:
Nota : mon code réel est beaucoup plus compliqué. J'ai simplifié pour mettre en évidence la solution. C'était la moindre des choses, non ?


Message édité par Kiosquec le 04-06-2005 à 14:55:20
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed