Problème avec firefox et IE

Problème avec firefox et IE - HTML/CSS - Programmation

Marsh Posté le 16-11-2011 à 10:25:59    

Bonjour,
 
Pourriez-vous me dire pourquoi le code suivant marche pour chrome et safari et pas sur firefox et IE ?
Je cherche depuis plusieurs jours, tenté plein de changements, mais je suis débutante en javascript et je sèche complètement. Merci de votre aide.
 
<html>
<body>
 
<html >
 
 <head>
 
  <title>Démineur</title>
   
  <script type="text/javascript" language=javascript>
   
 
 
 function choixprop(formulaire){
  if (formulaire.choix[0].checked) { A=10};
  if (formulaire.choix[1].checked) { A=20};
  if (formulaire.choix[2].checked) { A=30};
  fonction1()
 }
   
 
 function fonction1(){  
  //création d'un tableau
  aTab=new Array(A);
  for (i=0;i<A;i++){aTab[i]=new Array(10)}      
  for(i=0;i<A;i++)
  {  
   for(j=0;j<10;j++)
   {
   aTab[i][j]=j;
   }
  }
 bTab=new Array(A);
  for (i=0;i<A;i++){bTab[i]=new Array(10)}      
  for(i=0;i<A;i++)
  {  
   for(j=0;j<10;j++)
   {
   bTab[i][j]='"  "';
   }
  }
   
   
  //Affichage du tableau  
  document.write("<div style=position:relative;left:450px;>" )
  document.write("<form name=form method=post action=>" )
  document.write("<table  width=265 height=380 border=4  cellspacing=2><TR>" );
     for (i=0; i<A; i++)  
   {  
  document.write("<TR>" );
  for(j=0;j<10;j++)
  {  
   u=100*i+j;
   document.write("<TD>"+"<input id="+u+" type=button value='  '  ondblClick='affichevaleur("+i+","+j+","+u+" )' onclick='affichecouleur("+i+","+j+","+u+" )' >"+"</TD>" );
  }
 }
 
 document.write("</div></tr>" )
 document.write("</TR></table></form></div>" );
}
   
  // fonction pour changer le style  
  function style(B,id){
  switch (B) {
  case 0 : document.getElementById(id).setAttribute('style','background-color:#0099FF; color:#66CC00;font-weight:bold; font-size:large')
  break
  case 1 : document.getElementById(id).setAttribute('style','background-color:#0066FF; color:#FF9933;font-weight:bold; font-size:large')
  break
  case 2:  document.getElementById(id).setAttribute('style','background-color:#0033FF ; color:#FF6600;font-weight:bold; font-size:large')
  break
  case 3 : document.getElementById(id).setAttribute('style','background-color:#0000FF; color:#FF3366;font-weight:bold; font-size:large')
  break
  default : document.getElementById(id).setAttribute('style','background-color:#000099; color:#FF0000;font-weight:bold; font-size:large')
  break}
  }
   
  function affichecouleur(a,b,id){
  switch (bTab[a][b]){
  case '"  "' :
  document.getElementById(id).setAttribute('value',"*" );
  document.getElementById(id).setAttribute('style','background-color:#000055; color:white;font-weight:bold; font-size:large')
  bTab[a][b]=1;
  break
  case 1 :
  document.getElementById(id).setAttribute('value',"?" );
  document.getElementById(id).setAttribute('style','background-color:grey; color:white;font-weight:bold; font-size:large')
  bTab[a][b]=2;
  break
  case 2 :
  document.getElementById(id).setAttribute('value','  ');
  document.getElementById(id).setAttribute('style','background-color:default; font-weight:default; font-size:default')
  bTab[a][b]='"  "';
  break
  }
  }
   
 
  function affichevaleur(a,b,id) {
  document.getElementById(id).setAttribute('value',aTab[a][b]);
  style(aTab[a][b],id);
   }
   
   
document.write("Entrez votre choix :" )
document.write("<FORM NAME='formulaire'>" )
document.write("<INPUT TYPE='radio' NAME='choix' VALUE="+1+"> 10 lignes<BR>" )
document.write("<INPUT TYPE='radio' NAME='choix' VALUE="+2+"> 20 lignes<BR>" )
document.write("<INPUT TYPE=radio NAME='choix' VALUE="+3+"> 30 lignes<BR>" )
document.write("<INPUT TYPE=button NAME=but VALUE='Quel est votre choix ?' onClick='choixprop(formulaire)'>" )
document.write("</FORM> " )
   
   </SCRIPT>  
 
 
 </head>  
 
</html>
</body>

Reply

Marsh Posté le 16-11-2011 à 10:25:59   

Reply

Marsh Posté le 17-11-2011 à 12:32:22    

Bonjour didoa.
 
Tout d'abord qu'est censé afficher ton code ?
Ensuite, est-ce que javascript est activé dans Firefox et IE ?
(Firefox : Outils / Options / onglet Contenu)
(IE : euh...)

Reply

Marsh Posté le 17-11-2011 à 12:51:38    

Bonjour,
 
Oui, javascript est bien activé. Mon code affiche un tableau qui peut avoir un nombre différents de lignes selon le choix de l'utilisateur, puis il doit afficher des choses différentes dans chacune des cases selon que l'on clique ou double clique sur cette case.  
Cordialement

Reply

Marsh Posté le 19-11-2011 à 20:26:29    

Je pense avoir essayé tout ce que je pouvais, mais je n'ai toujours aucune idée de pourquoi ça ne marche pas. Personne pour m'aider ?
 
Merci

Reply

Marsh Posté le 20-11-2011 à 15:52:55    

De un, ton code est crado. J'entends par là que il y a plusieurs fois le tag html, et le body est ouvert trop tôt, etc, ...
Ensuite, tes premier document.write se déclenchent trop tôt, avant que le dom ne soit chargé, ce qui a pour effet d'écraser ton code.

 

Laisses moi un peu de temps, je nettoie et je poste ;)


Message édité par SICKofitALL le 20-11-2011 à 15:53:14

---------------
We deserve everything that's coming...
Reply

Marsh Posté le 20-11-2011 à 16:53:18    

Oui, je suis d'accord, j'ai tout nettoyé, mis les documents.write dans le body html quand c'est possible, mais ça ne marche pas mieux. Merci de ton aide !

Reply

Marsh Posté le 20-11-2011 à 22:11:08    

voilà le code, qui fait la même chose que ce que tu avais avant (je pense du moins :D) :

Code :
  1. <html>
  2. <head>
  3. <title>Démineur</title>
  4. <script type="text/javascript">
  5.  //--------------------------------------------------------------------------------------------------------------
  6.  var aTab,
  7.   bTab,
  8.   //----------------------------------------------------------------------------------------------------------
  9.   genTableau = function (taille)
  10.   {
  11.    //création d'un tableau
  12.    var ta = [],
  13.     tb = [],
  14.     html = [];
  15.    for (var i = 0; i < taille; i++)
  16.    {
  17.     ta[i] = [];
  18.     tb[i] = [];
  19.     for (var j = 0; j < taille; j++)
  20.     {
  21.      ta[i].push (j);
  22.      tb[i].push ("  " );
  23.     }
  24.    }
  25.    //Affichage du tableau
  26.    html.push ("<div style='position: relative; left: 450px;'>" );
  27.     html.push ("<table border='4' cellspacing='2'>" );
  28.     for (var i = 0; i < taille; i++)
  29.     {
  30.      html.push ("<tr>" );
  31.      for (var j = 0; j < taille; j++)
  32.      {
  33.       var id = i + "|" + j; // on "sauve" i et j
  34.       html.push ("<td>" );
  35.        html.push ("<input id='" + id + "' type='button' value='  ' ondblClick='afficheValeur (this)' onclick='afficheCouleur (this)' />" );
  36.       html.push ("</td>" );
  37.      }
  38.      html.push ("</tr>" );
  39.     }
  40.     html.push ("</table>" );
  41.    html.push ("</div>" );
  42.    document.getElementsByTagName ('body')[0].innerHTML = html.join ("" );
  43.    return [ ta, tb ];
  44.   },
  45.  //--------------------------------------------------------------------------------------------------------------
  46.  // fonction pour changer le style
  47.  style = function (val, el)
  48.   {
  49.    switch (val)
  50.    {
  51.     case 0:
  52.      el.setAttribute ('style', 'background-color:#0099FF; color:#66CC00;font-weight:bold; font-size:large');
  53.      break;
  54.     case 1:
  55.      el.setAttribute ('style', 'background-color:#0066FF; color:#FF9933;font-weight:bold; font-size:large');
  56.      break;
  57.     case 2:
  58.      el.setAttribute ('style', 'background-color:#0033FF ; color:#FF6600;font-weight:bold; font-size:large');
  59.      break;
  60.     case 3:
  61.      el.setAttribute ('style', 'background-color:#0000FF; color:#FF3366;font-weight:bold; font-size:large');
  62.      break;
  63.     default:
  64.      el.setAttribute ('style', 'background-color:#000099; color:#FF0000;font-weight:bold; font-size:large');
  65.      break;
  66.    }
  67.   },
  68.  //--------------------------------------------------------------------------------------------------------------
  69.  afficheCouleur = function (el)
  70.   {
  71.    var values = el.id.split ("|" ), // on "retrouve" i et j
  72.     i = values[0],
  73.     j = values[1];
  74.    switch (bTab[i][j])
  75.    {
  76.     case "  ":
  77.      el.value = "*";
  78.      el.setAttribute ('style', 'background-color: #000055; color: white; font-weight: bold; font-size: large');
  79.      bTab[i][j] = 1;
  80.      break;
  81.     case 1:
  82.      el.value = "?";
  83.      el.setAttribute ('style', 'background-color: grey; color: white;font-weight: bold; font-size: large');
  84.      bTab[i][j] = 2;
  85.      break;
  86.     case 2:
  87.      el.value = '  ';
  88.      el.setAttribute ('style', 'background-color: default; font-weight: default; font-size: default');
  89.      bTab[i][j] = '  ';
  90.      break;
  91.     default:
  92.      break;
  93.    }
  94.   },
  95.  //--------------------------------------------------------------------------------------------------------------
  96.  afficheValeur = function (el)
  97.   {
  98.    var values = el.id.split ("|" ), // on "retrouve" i et j
  99.     i = values[0],
  100.     j = values[1];
  101.    el.value = aTab[i][j];
  102.    style (aTab[i][j], el);
  103.   },
  104.  //--------------------------------------------------------------------------------------------------------------
  105.  choixProp = function (btn)
  106.   {
  107.    var taille = 10, // valeur par défaut
  108.     choix = btn.form.choix;
  109.    if (choix[0].checked)
  110.    {
  111.     taille = 10
  112.    }
  113.     else if (choix[1].checked)
  114.     {
  115.      taille = 20
  116.     }
  117.      else if (choix[2].checked)
  118.      {
  119.       taille = 30
  120.      }
  121.    var t = genTableau (taille);
  122.    aTab = t[0];
  123.    bTab = t[1];
  124.   };
  125.  // =============================================================================================================
  126.  window.onload = function ()
  127.   {
  128.    var html = [];
  129.    html.push ("Entrez votre choix :" );
  130.    html.push ("<form name='formulaire'>" );
  131.    for (var i = 1; i <= 3; i++)
  132.    {
  133.     html.push ("<input TYPE='radio' name='choix' value='" + (i * 10) + "' />" + (i * 10) + " lignes" );
  134.    }
  135.    html.push ("<input type='button' name='but' value='Quel est votre choix ?' onClick='choixProp (this)' />" );
  136.    html.push ("</form>" );
  137.    document.getElementsByTagName ('body')[0].innerHTML = html.join ("<br/>" );
  138.   }
  139. </script>
  140. </head>
  141. <body>
  142. </body>
  143. </html>


 
Attention aux variables globales, aux point-virgules en fin de ligne, à la disposition de tes tags, etc...
 
Si t'as un soucis hésites pas ;)


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 20-11-2011 à 23:43:11    

Génial !! Merci beaucoup !!!! Je désespérais de trouver une solution à mon problème ! Il ne me reste plus qu'à étudier ce que tu as fait dans le détail et je vais pouvoir en savoir un peu plus sur javascript ! Merci encore

Reply

Sujets relatifs:

Leave a Replay

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