Problème affichage de value après setAttribute sous Firefox alors que IE OK [Résolu]

glachant 39 Messages postés vendredi 16 janvier 2004Date d'inscription 24 novembre 2010 Dernière intervention - 3 juil. 2008 à 02:17 - Dernière réponse : glachant 39 Messages postés vendredi 16 janvier 2004Date d'inscription 24 novembre 2010 Dernière intervention
- 4 juil. 2008 à 00:26
Bon ...ça continue...
Tout marche nickel sous IE (pour une fois !) ...mais voilà que sous FF ça deconne quand je monte ou descends les lignes du tableau ( si vous essayez le tableau devient visible en choisissant type de réponse "choix unique" ou "choix multiple") :
Il veut pas m'afficher la valeur value de l'input type= text (colonne du milieu du tableau)...alors qu'apparemment elle bien initialisée...dixit les belles alert avant la sortie de la fonction MoveRow()

y'a quelqu'un pour m'aider svp ?

Merci d'avance

Voilà les 3 fichiers fonctionnels sans rien toucher...(juste à recopier) :

FICHIER coqUtils.js :
//=================================
//DEFINITION DES VARIABLES GLOBALES
//=================================
var tableau;


//===============================
//AJOUT DES EVENTLISTENER ONLOAD
//===============================
if(typeof window.addEventListener != 'undefined') //.. gecko, safari, konqueror and standard
 window.addEventListener('load', Init, false);
else if(typeof document.addEventListener != 'undefined') //.. opera 7
 document.addEventListener('load', Init, false);
else if(typeof window.attachEvent != 'undefined') //.. win/ie
 window.attachEvent('onload', Init);


//==========================
//FONCTION D'INITIALISATIONS
//==========================
function Init()
{
 //Placer ici toutes les fonctions devant être executées au chargement
 InitTabQcm();
}


//======================================================
function InitTabQcm()//Initialisation du tableau des Qcm
//======================================================
{
 tableau=ElemByID('tabQcm');
 //affectation du nombre de lignes à l'input qcmcompt
 ElemByID('qcmcompt').value=tableau.rows.length;
 //Affichage du tableau si demandé par l'utilisateur
 if (ElemByID('tpl_shwfrmquest').value=="yes"){
  ElemByID('frmQuest').style.display='block';
 }
 //Affichage/masquage du formulaire en fonction du type de réponse souhaitée
 ShowFrmQcm('tpl_anstyp', 'frmQcm');
}




//==================================================
function ElemByID(id)//==Retourne un objet valide==
//==================================================
{
  if (document.getElementById) {
   return document.getElementById(id); //IE5+, FF
  } else if(document.all) {
   return document.all(id);//IE4
  } else if (document.layers) {
   return document.layers[id];//NS
  }
 else {
  return null;
 }
}


//========================================
function CreateElementWithName(type, name)
//========================================
{
  var element;
  // First try the IE way; if this fails then use the standard way
  if (document.all) {
    element =  document.createElement('< '+type+' name="'+name+'" />');
  }
 else {
    element = document.createElement(type);
    element.setAttribute('name', name);
  }
  return element;
}


//=====================================================
function Reset(frm_id)//==Afficher/Masquer un

//=====================================================
{
 //remise à zero du form
 ElemByID(frm_id).reset();
 //Masquage du div qcm si besoin
 ShowFrmQcm('tpl_anstyp', 'frmQcm');
 //supression des lignes ajoutées par l'utilisateur
 for (var i=1; i0){
   //Affectation du champ caché comportant le n° de ligne cible et utilisé par DeleteRow
   ElemByID(\"qcmnum\").value=i;
   //Suppression de la ligne cible
   DeleteRow(false);
   //Décrémentation du compteur suite à la suppression de ligne
   i=i-1;
  }
 }
}

//=====================================================
function Show(id, value)//==Afficher/Masquer un

//=====================================================
{
 ElemByID(id).style.display=value;
}

//===========================================================
function ShowFrmQcm(selId, frmId)//==Afficher/Masquer les qcm
//===========================================================
{
 var i = 0;

 if (ElemByID(selId).value==1) { 
  ElemByID(frmId).style.display='none';
  ElemByID('tpl_autharg').style.display='none';
 }
 else if(ElemByID(selId).value==2 || ElemByID(selId).value==3){
  ElemByID(frmId).style.display='block';
  ElemByID('tpl_autharg').style.display='inline';
 }

}

//=============================================================
function AddLine() //== ajout d'une ligne
//=============================================================
{
 //On autorise 100 qcm max + la ligne de titre
 if(tableau.rows.length==101) {
  return;
 }
 //Declaration des variables
 //var timestamp = Math.floor((new Date()).getTime() / 1000);
 var rownum  = tableau.rows.length;
 var row   = tableau.insertRow(rownum);
 var compt  = Number(ElemByID(\"qcmcompt\").value);

 //Affectation du row
 SetRow(row, rownum, compt);
 //Ajout des listener
 tableau.rows[rownum].onmousedown = function(row){ChosedLine(this);}
 ElemByID(\"dwnQcm_\"+compt).onclick = function(){MoveRow(1);}
 ElemByID(\"upQcm_\"+compt).onclick = function(){MoveRow(-1);}
 ElemByID(\"delQcm_\"+compt).onclick = function(){DeleteRow(true);}
 ElemByID(\"inpQcm_\"+compt).focus();
 
 //Mise à jour du compteur avec la prochaine valeur
 ElemByID(\"qcmcompt\").value = compt+1;
}

function SetRow(row, rownum, compt)
{
 //Affecter la classe à la ligne
 row.setAttribute(\"className\",\"blueFineTr\");//IE
 row.setAttribute(\"class\",\"blueFineTr\");//FF
 
 //Ajouter les cellules
 for (var cellpos=0;cellpos<tableau.rows[0].cells.length;cellpos++)
 {
  var cell = row.insertCell(cellpos);
  cell.setAttribute(\"className\", \"blueFineTd\");//IE
  cell.setAttribute(\"class\", \"blueFineTd\");//FF
  switch (cellpos)
  {
   case 0 :
    //Ajout d'un input hidden pour identifier la ligne comme dynamique
    var input = window.document.createElement('input');
    input.setAttribute('type', 'hidden');
    input.setAttribute('id', \"inpQcmd_\"+compt);
    input.setAttribute('value', 'dyn');
    cell.appendChild(input);
    //Ajout du numéro de ligne
    var span = document.createElement('span');
    span.setAttribute(\"id\", \"spQcm_\"+compt);
    span.innerHTML=rownum;
    cell.appendChild(span);
    break;
   case 1 :
    //Ajout de l'input réponse
    var input = window.document.createElement('input');
    input.setAttribute(\"type\", \"text\");
    input.setAttribute(\"id\", \"inpQcm_\"+compt);
    input.setAttribute(\"size\", 45);
    input.setAttribute(\"name\", \"tpl_coq_qcmtext[]\");
    input.setAttribute(\"value\", \"\");
    input.setAttribute(\"maxLength\", 255);
    cell.appendChild(input);
    break;
   case 2 :
    //Ajout du bouton descendre
    var span1 = document.createElement('span');
    var img1 = document.createElement('img');
    img1.setAttribute(\"id\", \"dwnQcm_\"+compt);
    img1.setAttribute(\"src\", \"/images/down.bmp\");
    img1.setAttribute(\"alt\", \"Descendre\");
    span1.appendChild(img1);
    cell.appendChild(span1);
    //Ajout du bouton Monter
    var span2 = document.createElement('span');
    var img2 = document.createElement('img');
    img2.setAttribute(\"id\", \"upQcm_\"+compt);
    img2.setAttribute(\"src\", \"/images/up.bmp\");
    img2.setAttribute(\"alt\", \"Monter\");
    span2.appendChild(img2);
    cell.appendChild(span2);
    //Ajout du bouton supprimer
    var span = document.createElement('span');
    var img = document.createElement('img');
    img.setAttribute(\"id\", \"delQcm_\"+compt);
    img.setAttribute(\"src\", \"/images/delete_red.png\");
    img.setAttribute(\"alt\", \"Supprimer\");
    span.appendChild(img);
    cell.appendChild(span);
    break;
  }
 }
}

//===================================================function ChosedLine(lig) //choix d'une ligne
//===================================================
{
 ElemByID(\"qcmnum\").value=lig.rowIndex;
 Select(); 
}

//========================================================
function Select() //== marquer la ligne
//========================================================
{
 for (var l=1;l<tableau.rows.length;l++) {
  for (var c=1;c<tableau.rows[l].cells.length;c++) {
   if (l==Number(ElemByID(\"qcmnum\").value)){
    tableau.rows[l].cells[c].style.backgroundColor=\"#EAC103\";
   }
   else {
    tableau.rows[l].cells[c].style.backgroundColor=\"#FFFFFF\";
   }
  } 
 }
}

//===========================================function DeleteRow(conf) //suppression
//===========================================
{
 //affichage du message de confirmation
 if(conf==true){
  if (!confirm(\"Confirmez-vous la suppression de cette ligne ?\")){
   return;
  }
 }
 
 //Suppression de la ligne
 tableau.deleteRow(Number(ElemByID(\"qcmnum\").value));
 //Renumérotation des lignes
 RenumberRows();
 //Remise à blanc de l'index qui a été positionné sur cette ligne par les onmousedown
 ElemByID(\"qcmnum\").value=\"\";
}

//==================================================================
function RenumberRows()//~~Renumérote l'affichage du numéro de ligne
//==================================================================
{
 for (var i=1; i<tableau.rows.length;i++) {
  var spans = tableau.rows[i].cells[0].getElementsByTagName('span');
  if(spans.length>0)
   ElemByID(spans[0].getAttribute(\"id\")).innerHTML=i;
 }
}

//===============================================
function MoveRow(way)//~~Déplace une de 1/-1 rang
//===============================================
{
 //Initialisation des variables
 var rowToMove=tableau.rows[ElemByID(\"qcmnum\").value];
 var newIndex = 0;   //Index de destination avant suppression du rowToMove
 var finalIndex = 0;  //Index de destination après suppression du rowToMove
 var delIndex =0;   //Index de la ligne à déplacer, à supprimer après insert
 var inputs = rowToMove.cells[1].getElementsByTagName(\"input\");
 var inputID = inputs[0].getAttribute(\"id\");
 var compt = inputID.substring(inputID.indexOf(\"_\", 0)+1, inputID.length);
 var qcmtext = ElemByID(\"inpQcm_\"+compt).getAttribute(\"value\");
 
 if(way==1){
  newIndex = rowToMove.rowIndex+way+1;
  finalIndex = newIndex-1;
  delIndex = rowToMove.rowIndex;
 }
 else if(way==-1) {
  newIndex = rowToMove.rowIndex+way;
  finalIndex = newIndex;
 }

 //Interdiction de remplacer la ligne de titre et de descendre la dernière ligne
 if ((newIndex==0) || (way==1 && rowToMove.rowIndex+1==tableau.rows.length)){
  return;
 }

 //Insertion d'une nouvelle ligne pour y copier celle à déplacer
 var newRow = tableau.insertRow(newIndex);

 //Réaffectation de tous les paramètres au nouveau row
 SetRow(newRow, newIndex, compt);

 //Suppression de la ligne qui a été dupliquée
 tableau.deleteRow(rowToMove.rowIndex);
 
 //Ajout d'un listener onmousedown à la nouvelle ligne
 tableau.rows[finalIndex].onmousedown = function(newRow){ChosedLine(this);}
 ElemByID(\"dwnQcm_\"+compt).onclick = function(){MoveRow(1);}
 ElemByID(\"upQcm_\"+compt).onclick = function(){MoveRow(-1);}
 ElemByID(\"delQcm_\"+compt).onclick = function(){DeleteRow(true);}
 ElemByID(\"inpQcm_\"+compt).focus();
 //Réaffectation du texte
 ElemByID(\"inpQcm_\"+compt).setAttribute(\"value\", qcmtext);
 //Renumérotation des lignes
 RenumberRows();
}

=========================================================================
FICHIER index.html :
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"<html\">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"><html xmlns=\"http://www.w3.org/1999/xhtml\">
<head>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />
<meta Name=\"description\" content=\"blabla\"  />
<meta Name=\"keywords\" content=\"\"/>
<meta http-equiv='Content-Script-Type' content='text/javascript'/>
<meta name=\"robots\" content=\"index, follow, all\">
<link rel=\"stylesheet\" href=\"/siystylesheet.css\" type=\"text/css\" />
<title>bug</title>
<script type=\"text/javascript\" src=\"/coqUtils.js\"></script>
</head>

 
 

 

 
 

 

 
 
 
 
 
 

 

 
 

 
   

     
      <form action=\"/calloffer/cohQuest.php\" method=\"post\" name=\"frmCoq\" id=\"frmCoq\"
      enctype=\"multipart/form-data\">
       
           
       
       
       

          Titre :
         
         
         
       

       

          Question :
         
            <textarea name=\"tpl_coq_quest\" cols=\"45\" rows=\"5\"></textarea>
         
       

       

          Réponse :
         
            <select name=\"tpl_ansmandatory\">
              <option value=\"1\"
              >
                Obligatoire
              </option><option value=\"2\"
              >
                Facultative
              </option>
            </select>
         
       

       

          Points :
         
         
         
       

       

          Type de réponse :
         
            <select name=\"tpl_anstyp\" id=\"tpl_anstyp\" onchange=\"ShowFrmQcm('tpl_anstyp','frmQcm');\">
              <option value=\"1\"
              id=\"optAnstyp_1\" >
                Texte
              </option><option value=\"2\"
              id=\"optAnstyp_2\" >
                Choix unique
              </option><option value=\"3\"
              id=\"optAnstyp_3\" >
                Choix multiple
              </option>
            </select>
         
       

       

         

            Liste de choix :

              (100 rép. max.)
           
           
              <table id=\"tabQcm\" class=\"blueFineTable\" align=\"left\" width=\"100%\" >
                ----

                  N° |
                  Choix |
                  Action |
               
               
             

             
             
             
           
         

       

       

          Autorisations participants:
         
           
            Permettre aux participants d'argumenter les QCM
       
           
            Permettre aux participants de joindre un fichier
         
       

       

          Fichier
(10 Mo max.) :
           
             
           
        

       
&nbsp;

       

         
         
       

      </form>
   


 
 
   
 

 



</html>


=====================================================================
Fichier siysteelsheet.css :

body {
 font-family: Verdana, Arial, Helvetica, sans-serif;
 font-size: 0.8em;
 background-color: #CCCCCC;
 padding: 5px;
 margin: 0px;
 text-align: center;
}


#page {
 width: 1000px;
 margin: 0px;
 background-color: #FFFFFF;
 padding: 0px;
}


#site {
position: absolute;
top : 70px;
left : 10px;
color: #000;
background-color: #ddd;
padding: 5px;
border: 1px solid gray;
}
#leftZone {
 margin: 3px;
 padding: 0px;
 float: left;
 width: 150px;
 height: 720px;
 border-right-width: 1px;
 border-right-style: solid;
 border-right-color: #666666;
}


#rightZone {
 float: right;
 height: 720px;
 width: 190px;
 margin: 3px;
 padding: 0px;
 border-left-width: 1px;
 border-left-color: #666666;
 border-left-style: solid;
}


#topPage {
 width: 991px;
 background-color: #666666;
 border: 1px solid #0A276F;
 margin: 0px;
 height: 115px;
 text-align: left;
 padding: 2px;
}
#footerZone {
 width: 1000px;
 background-color: #333333;
}


#content {
 width: 600px;
 margin-left: 10px;
 margin-top: 3px;
 text-align: left;
 display: inline-table;
}
#content a {
 text-decoration: none;
 color: #0A276F;
}
#content a:visited {
 color: #0A276F;
}


#identification {
 font-size: 12px;
 margin: 0px;
 padding: 0px;
 float: right;
 color: #CCCCCC;
}
#identification table {
 text-align: right;
 font-size: 12px;
 margin: 0px;
 padding: 0px;
}


#page a:visited {
 color: #0A276F;
}


a {
 color:#000000;
 text-decoration:none;
 text-transform:none;
}


h1 {
 text-decoration: none;
}
h2 {
 font-size: 20px;
 color: #EAC103;
}




h1, h2, h3, h4, div, p {
 margin: 0px;
}
h3 {
 font-size: 1.1em;
 margin-top: 0.8em;
 color: #EAC103;
}
h4 {
 font-size: 13px;
}
.butText {
 margin: 0px;
 padding: 0px;
 float: right;
 display: inline;
}




#footerZone {
 border-top-style: solid;
 border-bottom-style: solid;
 border-top-color: #A5D663;
 border-bottom-color: #A5D663;
 border-top-width: 1px;
 border-right-width: 1px;
 border-bottom-width: 1px;
 border-left-width: 1px;
 color: #0A276F;
 margin-top: 8px;
 margin-right: 0px;
 margin-bottom: 0px;
 margin-left: 0px;
}
#footerZone a {
 color: #0A276F;
}
#footerZone a:visited {
 color: #0A276F;
}


.blueFineTable {
 border: 1px solid #0A276F;
 border-collapse:collapse;
}


.blueFineTd {
 border: 1px solid #0A276F;
 overflow: auto;
}


.blueFineTh {
 background-color: #68799A;
 border: 1px solid #0A276F;
 text-align: left;
}
.txtDisabled {
 background-color: #CCCCCC;
 border: 1px solid #333333;
}
.blueFineTr {
 cursor: pointer;
}
.blueFineTrHover {
 background-color: #C4E1E1;
 cursor: pointer;
}


.red {
 color: #FF0000;
}


.button {
 color : #000000;
 font: normal 11px Verdana, Arial, Helvetica, sans-serif;
 text-indent : 2px;
 border: 1px solid #000000;
}


.message {
 color: #FF0000;
 background-color: #CCCCCC;
 text-align: left;
 border: 1px dashed #333333;
 filter: Light;
 padding: 3px;
}


#sitepath a {
 font-size: 9px;
 color: #333333;
}


#sitepath a:visited {
 font-size: 9px;
 color: #333333;
}


div.frmrow {
  clear: both;
  padding-top: 5px;
  }


div.frmrow span.frmlabel {
  float: left;
  width: 150px;
  text-align: left;
}


div.frmrow span.frmfill {
  float: right;
  width: 400px;
  text-align: left;
}


div.spacer {
  clear: both;
}




/****************************/
/*  début menu déroulant */
/****************************/
#menu {
 position: absolute; /* placement du menu, à modifier selon vos besoins */
 top: 107px;
 left: 9px;
 width: 100%; /* correction pour Opera */
 font-family: Verdana, Arial, Helvetica, sans-serif;
 font-size: 10px;
 color: #333333;
}


#menu ul, li {
 list-style-type:none;
 margin-right: 0px;
 margin-left: 0px;
}


/*chaque sous-menu*/
#menu ul li {
 position:relative;
 float:left;
 width:98px;
 cursor:pointer;
 display:block;
 height:13px;
 background-color: #ccc;
 background-image: none;
 margin-right: 1px;
}
 
/*carré déroulant sous un sous-menu niveau 1*/
#menu ul li ul {
display:none;
position:absolute;
width:196px;
border:1px solid #333333;
border-top:none;
top:13px;
left:0px;
}
 
#menu ul li ul li {
height:100%;
width:100%;
}
 
#menu ul li ul li a {
color: #333333;
font-size:10px;
font-weight:normal;
display:block;
height:100%;
border-top:1px solid #333333;
}


#menu ul li a {
display:block;
height:100%;
}
 
/*au passage de la souris on inverse les couleurs de la case*/
#menu ul li ul li a:hover, ul li a:hover {
color: #333333;
background:#FF6600;
}


/*décalage des sous-menu niveau 2 vers la droite*/
#menu ul li ul li ul {
top:0px;
left:196px;
}


#menu a:visited {
 color: #333333;
}
#headerpub {
 background-color: #000000;
 border: 1px solid #999999;
 margin: 0px;
 height: 70px;
 width: 600px;
}
Afficher la suite 

Votre réponse

14 réponses

Meilleure réponse
ralecul 112 Messages postés dimanche 23 mars 2003Date d'inscription 1 août 2008 Dernière intervention - 3 juil. 2008 à 20:16
3
Merci
Je t'assures que input.setAttribute("name", "toto"); ne peut pas marcher avec IE (IE7 inclus).

Tu verras que document.getElementsByName('toto').length donnera 0 sous IE et 1 sous Firefox.

Je le sais car j'ai refait un Builder DOM identique à celui de Prototype.


Pour le setAttribute('maxLength", 255) tu as raison cela fonctionne sous
Firefox, même si la version non camelized fonctionne également
(setAttribute('maxlength', 255))


Si tu ne veut pas te casser la tête avec les différences entre navigateurs utilise un Framework JS tel que Prototype ou Jquery.

Merci ralecul 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de ralecul
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 3 juil. 2008 à 10:11
0
Merci
Bonjour,

>>Tout marche nickel sous IE (pour une fois !)
parce que, pour une fois, tu ne codes pas comme un pied probablement !

>>...mais voilà que sous FF ça deconne
ah pardon ! j'ai rien dit !
si ça ne fonctionne pas avec FF, c'est que tu as mal codé !

et franchement tu ne peux pas faire un extrait et nous dire ce qui ne fonctionne pas ?
moi "tenez voila tout le code et débrouillez vous", ça me décourage
( par exemple crois tu que le css soit en cause ?  )

<hr />                Cordialement            Bul        
Commenter la réponse de cs_bultez
glachant 39 Messages postés vendredi 16 janvier 2004Date d'inscription 24 novembre 2010 Dernière intervention - 3 juil. 2008 à 15:51
0
Merci
Bul...tu vas pas me croire...j'ai voulu te retirer un maximum de code pour que tu puisses regarder facilement...et bien sûr j'ai voulu tester le code nettoyé avant de le poster...et ben avec du html en moins et sans le css...ça marche !
...et je vois pas vraiment le rapport...pourtant la console d'erreur firefox ne m'indique aucun message d'erreur, ni warning...

Le problème pour moi venait du code de MoveRow() et/ou SetRow(), où je pensais avoir fait une boulette...
En gros pour déplacer une ligne, j'en crée une nouvelle, j'y copie les éléments et supprime l'ancienne...quand j'affiche avec un alert( elem.innerHTML avant et après copié/collé) tout est OK, la preuve :
Contenu de la ligne à déplacer :Ligne rownum=1 et aux input id=1
Contenue de la ligne déplacée Avant elem.setAttribute('value') :
<td class="blueFineTd" classname="blueFineTd">3</td><td class="blueFineTd" classname="blueFineTd"></td><td class="blueFineTd" classname="blueFineTd"></td>



Texte copi?/coll? :Ligne rownum=1 et aux input id=1



Contenue de la ligne déplacée Apres elem.setAttribute('value') :
<td class="blueFineTd" classname="blueFineTd">3</td><td class="blueFineTd" classname="blueFineTd"></td><td class="blueFineTd" classname="blueFineTd"></td>

Mais par contre à l'affichage réel de la page, la ligne déplacée ne contient pas le texte d'origine mais Ligne rownum=3 et aux input id=1

...par conséquent je préfère ne pas nettoyer le code plus que ça, sinon plus de bug...mis à part le css je te l'accorde.
Commenter la réponse de glachant
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 3 juil. 2008 à 16:13
0
Merci
>>et ben avec du html en moins et sans le css...ça marche !
tu as cerné ton problème alors ( résolu peut-être ?  )
c'est toujours ce que je dis, mettre en forme sa question, sélectionner le
nécessaire et seulement ça, nous aide, et trés souvent suffit pour qu'on
trouve soi-même
l'autre jour tu mettais en doute IE, ici presque FF... ben non !
c'est ni l'un ni l'autre.
<hr />                Cordialement            Bul        
Commenter la réponse de cs_bultez
glachant 39 Messages postés vendredi 16 janvier 2004Date d'inscription 24 novembre 2010 Dernière intervention - 3 juil. 2008 à 16:33
0
Merci
je suis d'accord avec toi mais franchement de là à imaginer que la cause de mon problème se situe tout simplement sur les 2 lignes row.setAttribute("class", c'est fort de café...surtout que si je ne me trompe pas c'est bien la méthode à utiliser pour FF...donc j'ai bien cerné le problème...mais je ne comprends pas pourquoi et je n'ai aucune idée pour le résoudre !
Commenter la réponse de glachant
nicomilville 3498 Messages postés lundi 16 juillet 2007Date d'inscription 28 février 2014 Dernière intervention - 3 juil. 2008 à 16:43
0
Merci
Salut,

a ce que je vois tu n'a mis qu'un paramètre a la fonction setAttribute() alors que la fonction setAttribute() doit avoir deux paramètres obligatoirement !

exemple :

element.setAttribute('attribut','valeur');

a++

Si la réponse vous convient, pensez : Réponse acceptée !
Commenter la réponse de nicomilville
glachant 39 Messages postés vendredi 16 janvier 2004Date d'inscription 24 novembre 2010 Dernière intervention - 3 juil. 2008 à 18:53
0
Merci
Hello Nicom..

pardon, j'avais juste mis ça pour identifier l'action que je faisais...j'ai bien les 2 arguments dans le setAttribute...je comprends vraiment pas d'où vient la boulette...


...maintenant mon problème de
row.setAttribute("className","blueFineTr");//IE
row.setAttribute("class","blueFineTr");//FF
(qui est fait dans la fonction SetRow )a disparu...ou tout au moins n'existait pas...

après avoir retourné mon code dans tous les sens il y a quand même un truc bizarre...on dirait que tout vient de là (fonction MoveRow ):
var newRow = tableau.insertRow(newIndex);
 //Réaffectation de tous les paramètres au nouveau row
 SetRow(false, newRow, newIndex, compt);
//Suppression de la ligne qui a été dupliquée
 tableau.deleteRow(rowToMove.rowIndex);
 //Réaffectation du texte
 ElemByID("inpQcm_"+compt).setAttribute("value", qcmtext);

...dans SetRow, la nouvelle ligne est créée avec un champ input text avec un id et une valeur par défaut.
Quand on change la valeur de cet input, puis que l'on déplace la ligne, le ElemByID("inpQcm_"+compt).setAttribute("value", qcmtext);
se fait bien car quand je fais un alert(ElemByID("inpQcm_"+compt).getAttribute("value")); juste après il me retourne la nouvelle valeur
 et si je fais un alert(tableau.innerHTML); juste après cette alerte, ça m'affiche l'input avec la valeur avant modification...!!!!!!!!!
ça marche bien sous IE mais pas sous FF...franchement ça vaut le détour de récupérer les 3 fichiers et de regarder parce que j'ai encore jamais vu ça !
Commenter la réponse de glachant
glachant 39 Messages postés vendredi 16 janvier 2004Date d'inscription 24 novembre 2010 Dernière intervention - 3 juil. 2008 à 19:18
0
Merci
!!!!!!!!!!!!!!!!!


et ben maintenant voilà que FF me récupère l'ancienne valeur de la ligne dans



var qcmtext = ElemByID("inpQcm_"+compt).getAttribute("value");


au lieu de prendre la nouvelle ...se que fait bien IE !
je déséspère là ...!
Commenter la réponse de glachant
ralecul 112 Messages postés dimanche 23 mars 2003Date d'inscription 1 août 2008 Dernière intervention - 3 juil. 2008 à 19:24
0
Merci
Salut,

Installe Firebug : http://getfirebug.com/ !

Sinon plusieurs erreurs :
input.setAttribute("name", "tpl_coq_qcmtext[]"); -> ne marche pas sous IE il faut utiliser ta fonction CreateElementWithName...
input.setAttribute("maxLength", 255); -> pas sur que ça passe sous firefox, plutôt setAttribute("maxlength", 255);
-> manque l'id :id ="qcmcompt"
IE est plus laxiste que Firefox, il tolère un document.getElementById avec un name et non un id comme paramètre...

Je m'arrête là, à toi de corriger tout ça et de tester avec Firebug.

@+
Commenter la réponse de ralecul
glachant 39 Messages postés vendredi 16 janvier 2004Date d'inscription 24 novembre 2010 Dernière intervention - 3 juil. 2008 à 19:25
0
Merci
Ben voilà ...à force de persévérence...
var qcmtext = ElemByID('inpQcm_'+compt).getAttribute('value');//OK sous IE
var qcmtext = ElemByID('inpQcm_'+compt).value;//OK sous FF

....mais quand même, expliquez-moi pourquoi ça marche pas sous FF le getAttribute....c'est quand même ça le standard non ???? en plus j'ai la dernière version....

merci de votre aide Bul et Nicom...mais finalement vous en pensez quoi ?
Commenter la réponse de glachant
glachant 39 Messages postés vendredi 16 janvier 2004Date d'inscription 24 novembre 2010 Dernière intervention - 3 juil. 2008 à 19:55
0
Merci
Salut ralecul !

input.setAttribute("name", "tpl_coq_qcmtext[]"); -> ne marche pas sous IE il faut utiliser ta fonction CreateElementWithName...
> pourtant ça marche chez moi...mais bon j'imagine que ça doit dépendre des versions

input.setAttribute("maxLength", 255); -> pas sur que ça passe sous firefox, plutôt setAttribute("max l ength", 255);
==> ça passe aussi mais pareil, peut-être pas sur les versions précédentes...

-> manque l'id :id ="qcmcompt"
>j'avais remarqué aussi....mais c'est bien vu...

Merci beaucoup ralecul...vraiment tu as l'oeil....j'avais encore une ou deux bizarreries comme ça que j'ai corrigé...

par contre avec toutes ces m.... de navigateurs différents sans parler des versions, y'a pas un site qui fait un comparo des fonctions autorisées par les uns et les autres et les différentes solutions à apporter pour la compatibilité maximum ?
Commenter la réponse de glachant
glachant 39 Messages postés vendredi 16 janvier 2004Date d'inscription 24 novembre 2010 Dernière intervention - 3 juil. 2008 à 22:56
0
Merci
Ben mdr...alors !
j'étais persuadé de les avoir vu mes attributs name...!!! en fait ça devait être sous FF...j'ai tellement bouclé entre les 2 pour résoudre mon pb....

...alors juste une remarque parce que je n'ai pas voulu mourir idiot...j'ai quand même essayé de valider mon formulaire...et ben les attributs name n'existent pas, en revanche les valeurs sont bien transmises dans le $_POST !!!!!!
BRAVO MS ILS SONT TROP FORTS....

OK pour le framework, je vais regarder ça...par contre si tu connais bien le sujet...tu me conseilles lequel ?
Commenter la réponse de glachant
ralecul 112 Messages postés dimanche 23 mars 2003Date d'inscription 1 août 2008 Dernière intervention - 3 juil. 2008 à 23:26
0
Merci
Si je continue comme ça, on va croire que je fais de la pub pour Prototype...

Bon perso j'aime bien la syntaxe de Prototype mais c'est vrai que 100k ça fait beaucoup quand même...
Donc je me suis recodé toutes les fonctionnalités que j'utilise de Prototype dans une version light qui fait 20k.
Sinon l'intérêt de Prototype est Script.aculo.us : leur classe Sortables est vraiment très bien !
Il y a visiblement une grande communauté du côté de jQuery avec plein de plugins, à toi de voir.
Il faut également que tu saches que ces Framework ne cohabitent pas vraiment ensemble.

Mais en règle générale le choix d'un Framework Js est un vrai sujet à Troll.
Donc le mieux c'est que tu regardes la syntaxe des Framework existant et que tu choisisses celui qui te plait le plus.
Commenter la réponse de ralecul
glachant 39 Messages postés vendredi 16 janvier 2004Date d'inscription 24 novembre 2010 Dernière intervention - 4 juil. 2008 à 00:26
0
Merci
Oki...
Adjugé pour Prototype...j'ai regardé un peu partout...et c'est vrai que ça a l'air plutôt sympa...je sais pas pourquoi je me suis fais c...à ce point...j'aurai dû regarder avant...
bon...sur ce au dodo....
encore merci
@+
Commenter la réponse de glachant

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.