begin process at 2012 05 29 21:11:48
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

JavaScript et le navigateur

 > 

Problème de compatibilité

 > 

Problème de programme javascript avecfirefox et IE


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème de programme javascript avecfirefox et IE

mercredi 16 novembre 2011 à 13:37:34 | Problème de programme javascript avecfirefox et IE

didojava

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.
Code XML :
 
<html>
<body>
 
<html >
 
 <head>
 
  <title>Démineur</title>
   
  <script type="text/javascript" language=javascript>
   
 
 
 function choixprop(formulaire){
  if (formulaire.choix.checked) { A=10};
  if (formulaire.choix.checked) { A=20};
  if (formulaire.choix.checked) { A=30};
  fonction1()
 }
   
 
 function fonction1(){  
  //création d'un tableau
  aTab=new Array(A);
  for (i=0;i<A;i++){aTab=new Array(10)}      
  for(i=0;i<A;i++)
  {  
   for(j=0;j<10;j++)
   {
   aTab=j;
   }
  }
 bTab=new Array(A);
  for (i=0;i<A;i++){bTab=new Array(10)}      
  for(i=0;i<A;i++)
  {  
   for(j=0;j<10;j++)
   {
   bTab='"  "';
   }
  }
   
   
  //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){
  case '"  "' :
  document.getElementById(id).setAttribute('value',"*" );
  document.getElementById(id).setAttribute('style','background-color:#000055; color:white;font-weight:bold; font-size:large')
  bTab=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=2;
  break
  case 2 :
  document.getElementById(id).setAttribute('value','  ');
  document.getElementById(id).setAttribute('style','background-color:default; font-weight:default; font-size:default')
  bTab='"  "';
  break
  }
  }
   
 
  function affichevaleur(a,b,id) {
  document.getElementById(id).setAttribute('value',aTab);
  style(aTab,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>
mercredi 16 novembre 2011 à 14:03:52 | Re : Problème de programme javascript avecfirefox et IE

Zobibol

Membre Club
Bien le bonjour, sure que ça fonctionne sur chrome (testé sur chrome 15 et il me dit plein de chose pas très gentille )
.
la correction est très simple car il manque une déclaration pour la variable A.
avant la fonction
Code Javascript :
function choixprop(formulaire)


il suffit de rajouter:
Code Javascript :
var A;


sinon, il est aussi (et cela est plus propre) de la déclarée dans la fonction
Code Javascript :
function choixprop(formulaire)
et de la transmettre à la fonction
Code Javascript :
fonction1()
comme paramètre :
Code Javascript :
fonction1(A)
.
Cela est plus propre car, du coup ce n'est pas une variable globale.



[o-_-o]
mercredi 16 novembre 2011 à 17:29:05 | Re : Problème de programme javascript avecfirefox et IE

didojava

Bonjour,

Ca marche sans problème chez moi avec Chrome (15.0.874.120) et il ne me signale aucune erreur. Par contre, même en déclarant cette variable A et en la passant en paramètre, ça ne marche pas sur firefox et IE (je ne pense pas que le problème soit le même pour les deux d'ailleurs). J'avais déjà essayé en fait, j'ai aussi déjà essayé de changer les majuscules en minuscules, de supprimer tous les espaces inutiles, ce genre de choses, mais rien n'y fait.

Cordialement
jeudi 17 novembre 2011 à 11:09:04 | Re : Problème de programme javascript avecfirefox et IE

jperre

Il existe un addOn de Firefox : Firebug qui permet de débugger les scripts Javascript, vous devriez l'utiliser pour faire apparaître les erreurs décelées.
Bon courage!...
jeudi 17 novembre 2011 à 12:54:03 | Re : Problème de programme javascript avecfirefox et IE

didojava

Bonjour,

J'ai déjà firebug, il me dit "affichevaleur is not defined" ou "affichecouleur is not defined". Ce qui hélas ne m'aide pas du tout.

Cordialement
jeudi 17 novembre 2011 à 13:37:30 | Re : Problème de programme javascript avecfirefox et IE

jperre

Dans le code HTML que vous utilisez, il y a un empilement qui me gène beaucoup :
Je lis :
<html>
<body>
<html>
<head>
<title>...</title>
<script>
...
</script>
</head>
</html>
</body>
</html>

On ne doit normalement pas utiliser ce type d'insertion, il faudrait :
<html>
<head>
</head>
<body>
eventuellement <iframe src="nom_doc_html"></iframe> pour insérer un autre document
</body>
</html>

Firefox qui se réfère à l'élément <html> parent ne trouve pas les fonctions auxquelles vous faites appel dans la section <head> de celui ci. Il envoie donc l'erreur "affichevaleur is not defined" ou "affichecouleur is not defined".

D'autre part, les normes HTML4 et HTML5 :
-> n'acceptent plus les noms de balises et d'attributs en majuscules,
-> n'acceptent plus les valeurs d'attributs qui ne sont pas encadrées par des parenthèses,
-> insèrent un signe de fin pour les balises d'éléments vides <br /> au lieu de <BR>

Si cela peut aider!...
jeudi 17 novembre 2011 à 18:55:28 | Re : Problème de programme javascript avecfirefox et IE

didojava

Bonsoir,

Merci de votre réponse. J'ai nettoyé mon code, mais ça ne marche pas mieux.

Cordialement,
samedi 19 novembre 2011 à 23:57:22 | Re : Problème de programme javascript avecfirefox et IE

jperre

Voici ton code entièrement réécrit et cela fonctionne sur Firefox et les autres navigateurs :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="fr" xml:lang="fr" xmlns="http://www.w3.org/1999/xhtml">
<html>
<head>
<title>Démineur</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<script type="text/javascript">
//Déclaration des tableaux en variables globales
var aTab=new Array();
var bTab=new Array();

function choixprop(){
var formulaire=document.getElementById("formulaire");
var A=0;
var n=0;
for (n=0;n<3;n++) {
if (formulaire.elements[n].checked) {
A=formulaire.elements[n].value;
break;
}
}
fonction1(A);
}

function fonction1(A){
//Remplissage des tableaux
var n=0;
var j=0;
if (aTab.length>0) {//suppression des éléments des tableaux précédemment utilisés
for (n=aTab.length-1;n>=0;n--) {
for (j=9;j>=0;j--) {
aTab[n].pop(j);
bTab[n].pop(j);
}
aTab.pop(n);
bTab.pop(n);
}
}
for (n=0;n<A;n++) {
aTab[n]=new Array(10);
bTab[n]=new Array(10);
}
for (n=0;n<A;n++) {
for(j=0;j<10;j++) {
aTab[n][j]=j;
bTab[n][j]=" ";
}
}
//Affichage du tableau HTML
document.getElementById("afftab").style.visibility="visible";
var tabaff=document.getElementById("tabaff");
//Suppression des lignes du tableau HTML si elles existent
if (tabaff.rows.length>0) {
for (n=(tabaff.rows.length-1);n>=0;n--) {
tabaff.deleteRow(n);
}
}
//Remplissage du tableau HTML en fonction du nombre de lignes choisi.
for (n=0;n<A;n++) {
var rowaff=tabaff.insertRow(n);
for(j=0;j<10;j++) {
var u=n + "_" + j;//Variable destinée à créer un index qui permet de retrouver les valeurs n et j
var cellaff=rowaff.insertCell(j);
cellaff.innerHTML="<input id=\""+u+"\" type=\"button\" value=\" \" ondblclick=\"affichevaleur("+n+","+j+",'"+u+"',"+aTab[n][j]+")\" onclick=\"affichecouleur("+n+","+j+",'"+u+"','"+bTab[n][j]+"')\" >";
}
}
}
// 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,arB){
var indexes=id.split("_");
var n=indexes[0];
var j=indexes[1];
switch (arB){
case " " :
document.getElementById(id).setAttribute("value","X" );
document.getElementById(id).setAttribute("onclick","affichecouleur("+a+","+b+",'"+id+"','1')" );
document.getElementById(id).setAttribute("style","background-color:#000055; color:white;font-weight:bold; font-size:large");
break;
case "1" :
document.getElementById(id).setAttribute("value","O" );
document.getElementById(id).setAttribute("onclick","affichecouleur("+a+","+b+",'"+id+"','2')" );
document.getElementById(id).setAttribute("style","background-color:grey; color:white;font-weight:bold; font-size:large");
break;
case "2" :
document.getElementById(id).setAttribute("value"," ");
document.getElementById(id).setAttribute("onclick","affichecouleur("+a+","+b+",'"+id+"',' ')" );
document.getElementById(id).setAttribute("style","background-color:default; font-weight:default; font-size:default");
break;
}
}


function affichevaleur(a,b,id,arA) {
document.getElementById(id).setAttribute("value",arA);
style(arA,id);
}
</script>
</head>
<body>
<p>Entrez votre choix :</p>
<form id="formulaire">
<input type="radio" name="choix" value="10" /> 10 lignes<br />
<input type="radio" name="choix" value="20" /> 20 lignes<br />
<input type="radio" name="choix" value="30" /> 30 lignes<br />
<input type="button" value="Quel est votre choix ?" onclick="choixprop()" />
</form>
<div id="afftab" style="position:relative;left:450px;visibility:hidden">
<form name="form">
<table id="tabaff" width="265" border="4" cellspacing="2">
</table>
</form>
</div>
</body>
</html>

Pour écrire un code correct, j'ai effectué les modifications suivantes :
* J'ai ajouté une déclaration <DOCTYPE> en début de document.
* J'ai ajouté des index lors du remplissage des tableaux. Sinon, Javascript ne sait pas à quel élément affecter des valeurs.
* Je vide le contenu des tableaux avant chaque nouvelle modification du nombre de lignes de la grille.
* J'ai utilisé la collection elements de l'objet DOM form pour déterminer quel bouton radio a été sélectionné.
* J'ai utilisé les méthodes insertRow() et deleteRow() de l'objet DOM table pour ajouter ou supprimer des lignes au tableau HTML.
* J'ai utilisé la méthode insertCell() de l'objet DOM tableRow pour ajouter des cellules.
* Je modifie le contenu de l'attribut onclick de la cellule cliquée pour lui attribuer sa nouvelle valeur.
dimanche 20 novembre 2011 à 08:44:49 | Re : Problème de programme javascript avecfirefox et IE

didojava

Formidable ! Merci beaucoup, je désespérais de trouver quelqu'un pour m'aider ! Maintenant, je n'ai plus qu'à comprendre ce que tu as fait, ce qui me permettra d'en savoir un peu plus sur javascript !

Merci encore et bon dimanche !
dimanche 20 novembre 2011 à 09:56:32 | Re : Problème de programme javascript avecfirefox et IE

jperre

Au début on essaye de faire fonctionner, ensuite on simplifie en enlevant le code inutile.
J'ai donc supprimé le tableau bTab qui ne sert à rien.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="fr" xml:lang="fr" xmlns="http://www.w3.org/1999/xhtml">
<html>
<head>
<title>Démineur</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<script type="text/javascript">
//Déclaration du tableau en variable globale
var aTab=new Array();

function choixprop(){
var formulaire=document.getElementById("formulaire");
var A=0;
var n=0;
for (n=0;n<3;n++) {
if (formulaire.elements[n].checked) {
A=formulaire.elements[n].value;
break;
}
}
fonction1(A);
}

function fonction1(A){
//Remplissage des tableaux
var n=0;
var j=0;
if (aTab.length>0) {//suppression des éléments des tableaux précédemment utilisés
for (n=aTab.length-1;n>=0;n--) {
for (j=9;j>=0;j--) {
aTab[n].pop(j);
}
aTab.pop(n);
}
}
for (n=0;n<A;n++) {
aTab[n]=new Array(10);
}
for (n=0;n<A;n++) {
for(j=0;j<10;j++) {
aTab[n][j]=j;
}
}
//Affichage du tableau HTML
document.getElementById("afftab").style.visibility="visible";
var tabaff=document.getElementById("tabaff");
//Suppression des lignes du tableau HTML si elles existent
if (tabaff.rows.length>0) {
for (n=(tabaff.rows.length-1);n>=0;n--) {
tabaff.deleteRow(n);
}
}
//Remplissage du tableau HTML en fonction du nombre de lignes choisi.
for (n=0;n<A;n++) {
var rowaff=tabaff.insertRow(n);
for(j=0;j<10;j++) {
var u=n + "_" + j;//Variable destinée à créer un index qui permet de retrouver les valeurs n et j
var cellaff=rowaff.insertCell(j);
cellaff.innerHTML="<input id=\""+u+"\" type=\"button\" value=\" \" ondblclick=\"affichevaleur("+n+","+j+",'"+u+"',"+aTab[n][j]+")\" onclick=\"affichecouleur("+n+","+j+",'"+u+"',0)\" >";
}
}
}
// 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,arB){
switch (arB){
case 0 :
document.getElementById(id).setAttribute("value","X" );
document.getElementById(id).setAttribute("onclick","affichecouleur("+a+","+b+",'"+id+"',1)" );
document.getElementById(id).setAttribute("style","background-color:#000055; color:white;font-weight:bold; font-size:large");
break;
case 1 :
document.getElementById(id).setAttribute("value","O" );
document.getElementById(id).setAttribute("onclick","affichecouleur("+a+","+b+",'"+id+"',2)" );
document.getElementById(id).setAttribute("style","background-color:grey; color:white;font-weight:bold; font-size:large");
break;
case 2 :
document.getElementById(id).setAttribute("value"," ");
document.getElementById(id).setAttribute("onclick","affichecouleur("+a+","+b+",'"+id+"',0)" );
document.getElementById(id).setAttribute("style","background-color:default; font-weight:default; font-size:default");
break;
}
}


function affichevaleur(a,b,id,arA) {
document.getElementById(id).setAttribute("value",arA);
style(arA,id);
}
</script>
</head>
<body>
<p>Entrez votre choix :</p>
<form id="formulaire">
<input type="radio" name="choix" value="10" /> 10 lignes<br />
<input type="radio" name="choix" value="20" /> 20 lignes<br />
<input type="radio" name="choix" value="30" /> 30 lignes<br />
<input type="button" value="Quel est votre choix ?" onclick="choixprop()" />
</form>
<div id="afftab" style="position:relative;left:450px;visibility:hidden">
<form name="form">
<table id="tabaff" width="265" border="4" cellspacing="2">
</table>
</form>
</div>
</body>
</html>

1 2

Cette discussion est classée dans : font, id, document, color, getelementbyid


Répondre à ce message

Sujets en rapport avec ce message

position d'un id [ par pqmoltonel ] bonjour, je cherche desespérément une fonction / propriétée qui permet de retourner la position d'un element html quelconque contenant un id:voila le liste déroulante [ par rieppe ] Rieppe ©Salut !je vous expose le problème. j'ai une liste déroulante en au de ma pasge, et il faudrait que lorsqu'elle change, cela change aussi les l Changer l'attribut color [ par perig ] Bonjoursvoila, j'aimerais pouvoir changer la couleurs d'un texte aprés avoir cliqué dessu.J'ai essayé de faire :textepuis de faire une fo connaitre la position (coordonnées) du curseur de la souris? [ par johanb ] Bonjour à tous, tous est dis dans le titre.Je sais c'est censé être qqc de basique, mais j'ai du mal. Voici l'origine de mon probleme: j'ai une liste probleme sur appel de radio dans une function [ par destiny ] Lo all,Mon code:echo " ".$danscamp." ";echo "<input type='radio' name='opt".$result_carac['IdPi DOCUMENT.WRITE [ par tonytruand ] Bonjour à tous!,J'ai besoin de votre aide car je ne comprends pas tout. j'ai fait en javscript un petit support de recherche.Le principe : j'ai une ba Pb de sélection dans un 'select' [ par noname85 ] Bonjour a tous ! J'ai un petit soucis avec des boutons "Sélectionner tous et "Déselectionner tous" ! J'explique : J'ai deux boutons dans un formulai document.getElementById() .div [ par abdoulax ] Bonjour, Je voulais faire un truc du genre : document.getElementById(id).div.style.paddingTop="0px"; En faite je veux modifier le style des div enfa Problème idiot : cacher/afficher un div [ par mfaraday ] Bonsoir,Je suis pas sur de poster au bon endroit (comme toujours) et je laisse aux admins la liberté de déplacer le post.Bref... passons aux choses sé checkbox avec id=[ ] [ par Furbyz ] Bonjour j'ai comme un petit probleme a comprendre si quelqu'un avais la solution svpvoila, je veut qu' en cliquant sur une checkbox mes boutons passe


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,402 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales