11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,
j'ai repris récemment un intranet PHP/MYSQL mais à ma grande surprise, l'ensemble des liens entre les pages sont réalisés à l'aide d'une fonction javascript qui passe des variables en hidden entre les pages par un formulaire sois générique, sois un formulaire d'un template de la page en question.

Cette fonction ne semble pas compatible pour firefox et c'est bien là le problème car j'aimerai bien que l'intranet soit visualisable sur le plus grand nombre possible de navigateurs

//****************************************************************************//
/**
 * Permet de valider un formulaire en modifiant certains inputs...
 *
 * @param   Genere_Formulaire     Bool     Génération du formulaire ?
 * @param   Nom_Formulaire        String   Nom du formulaire à valider
 * @param   Fichier_Php           String   Nom du fichier Php à exécuter
 * @param   Inputs                Array    Tableau Inputs et valeurs des inputs à modifier
 *
 */
function Valide_Formulaire (Genere_Formulaire, Nom_Formulaire, Fichier_Php, Inputs)
 {
  if (Genere_Formulaire)
     {
      document.write ('<form name="' + Nom_Formulaire + '" action="" method="post">');
      for (var i = 0; i < Inputs.length; i++)
          {
           document.write ('<input type="hidden" name="' + Inputs[ i] + '" value="" />');
           i++;
          }
      document.write ('</form>');
     }

  if (!Fichier_Php) {Fichier_Php = "index.php";}
  Phrase = Racine_Du_Site + Fichier_Php;
  for (var i = 0; i < Inputs.length; i++)
      {
       document.getElementById (Inputs[ i]).value = Inputs[i+1];
       i++;
      }
  document.forms [Nom_Formulaire].action = Phrase;
  document.forms [Nom_Formulaire].submit ();
 }
// Fin de Valide_Formulaire ()

Les liens sont de cette forme:

<a href="Javascript:Valide_Formulaire (1, 'Gen_Form', '', Array ('Lien', '1', 'Action', '620.20', 'Id_News', '<?= $Ligne ['Identificateur']?>'));">

Je pense avoir localisé l'errreur autour du document.GetElementById mais je n'arrive pas à trouver une solution de remplacement.

Des soluces à part réécrire des milliers de lignes?
Modifié par bonbon92 (20 Feb 2006 - 12:52)
Bonjour,

document.getElementById('IdTest') renvoie l'élément du document dont l'attribut id vaut "IdTest". Or le code sous la condition "if (Genere_Formulaire)" crée des éléments dont l'attribut name est Inputs[ i ] mais qui n'ont pas d'id. Par conséquent, l'appel à document.getElementById(Inputs[ i ]) échoue. Sous IE, cela fonctionne car IE autorise d'employer l'attribut name à la place de id.

Solution (une parmi d'autres) : remplacer
 document.write ('<input type="hidden" name="' + Inputs[ i ] + '" value="" />'); 
par
document.write ('<input type="hidden" name="' + Inputs[ i ] 
+ '" id="' + Inputs[ i ] + '" value="" />');


Bonne chance.
Administrateur
Bonjour et bienvenue bonbon92,

merci d'éditer ton 1er post pour placer le code dans des balises [ code] ... [ /code] (sans les espaces) pour rendre plus lisible ces lignes, comme expliqué dans les Règles du Forum.
J'ai édité ton code car les tableaux de variables de i sont prises pour des mises en italique (bbcode), suffit de mettre un espace devant ou de remplacer par [a] ou [i+0] Smiley smile

Enfin, le sujet est-il [Résolu]?

Felipe