Accueil > Forum > > > > Problème de programme javascript avecfirefox et IE
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
|
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 :
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 : comme paramètre :
Code Javascript : .
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>
|
|
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
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|