[RESOLU]document.getElementById() = null mais pourquoi ??

document.getElementById() = null mais pourquoi ?? [RESOLU] - HTML/CSS - Programmation

Marsh Posté le 13-06-2010 à 00:56:30    

Bonjour,
 
J'ai une liste  d'articles et pour les administrateurs il y a une colonne en plus qui permet via un bouton d'éditer un article. Il y a un bouton par article.
 
J'ai simplifié le nom des différents éléments.
 
Voici le code HTML:
 

Code :
  1. <form method="post" action="" id="nomForm" name="nomForm"><input type="hidden" name="nomhidden" value=""><a href="#" onclick="htmlPost_edit(\'editArticle\')">EDIT</a></form>


 
Voici le code JS:

Code :
  1. function htmlPost_edit(variable)
  2. {
  3. document.getElementById("nomForm" ).nomhidden.value = variable;
  4. document.getElementById("nomForm" ).submit();
  5. }


 
Le souci c'est que j'ai une erreur :
 
document.getElementById("nomForm" ) is null
 
Quelqu'un peut m'aider. Bizarrement ce code fonctionne pour d'autres éléments du site
 
Merci !


Message édité par headquaker le 20-06-2010 à 01:40:08
Reply

Marsh Posté le 13-06-2010 à 00:56:30   

Reply

Marsh Posté le 13-06-2010 à 06:24:18    

Essaye de donner un id différent du name...
Sinon comme ça... je vois pas d'où vient le problème...
Ca vient peut-être du contexte...
 
Tu peux mettre ta page en ligne ?


Message édité par Pascal le nain le 13-06-2010 à 06:28:51
Reply

Marsh Posté le 13-06-2010 à 09:44:34    

il faut un id sur ton form pas un name


---------------
Blablaté par Harko
Reply

Marsh Posté le 13-06-2010 à 11:31:29    

Ok je teste, si ca ne marche pas je post ma page.

Reply

Marsh Posté le 13-06-2010 à 11:45:07    

Ca dépend du navigateur.
 
Pour Firefox, il faut un id.
Mais pour IE et quelques versions d'Opera, getElementById marche aussi avec name.
 
Il y a aussi des subtilités avec la sensibilité aux majuscules et minuscules.
 

Citation :

oElement = object.getElementById(sIDValue)
Returns the first object with the specified ID or NAME.
Internet Explorer 8 and later. In IE8 mode, getElementById performs a case-sensitive match on the ID attribute only. In IE7 mode and previous modes, this method performs a case-insensitive match on both the ID and NAME attributes, which might produce unexpected results.
If more than one element is found, getElementById returns the first object in the collection.
For more information, see Defining Document Compatibility http://msdn.microsoft.com/en-us/li [...] S.85).aspx .  
 
(source : http://msdn.microsoft.com/en-us/li [...] S.85).aspx )

Reply

Marsh Posté le 13-06-2010 à 11:48:15    

olivthill a écrit :

Ca dépend du navigateur.
 
Pour Firefox, il faut un id.
Mais pour IE et quelques versions d'Opera, getElementById marche aussi avec name.
 
Il y a aussi des subtilités avec la sensibilité aux majuscules et minuscules.
 

Citation :

oElement = object.getElementById(sIDValue)
Returns the first object with the specified ID or NAME.
Internet Explorer 8 and later. In IE8 mode, getElementById performs a case-sensitive match on the ID attribute only. In IE7 mode and previous modes, this method performs a case-insensitive match on both the ID and NAME attributes, which might produce unexpected results.
If more than one element is found, getElementById returns the first object in the collection.
For more information, see Defining Document Compatibility http://msdn.microsoft.com/en-us/li [...] S.85).aspx .  
 
(source : http://msdn.microsoft.com/en-us/li [...] S.85).aspx )



Oui mais c'est un comportement débile juste pour des soucis de compatibilité car des mecs on codé des sites comme des gros porc.
 
getElementById ça porte bien son nom, ça retourne un élément par son ID, pas son name


---------------
Blablaté par Harko
Reply

Marsh Posté le 13-06-2010 à 22:55:54    

de toute facon j'utilise l'ID...et comme je l'ai dit, ce code fonctionne avec pleins d'autres fonctionnalités. Y'a juste là...

Message cité 1 fois
Message édité par headquaker le 13-06-2010 à 23:12:54
Reply

Marsh Posté le 14-06-2010 à 00:21:12    

headquaker a écrit :

de toute facon j'utilise l'ID...et comme je l'ai dit, ce code fonctionne avec pleins d'autres fonctionnalités. Y'a juste là...


Balise input mal fermée? Enfin je suppose que à peu près n'importe quel navigateur le corrigera. Mais sinon je vois pas.

 

Edit: Je viens de C/C ton code dans un fichier HTML tout simple, et ca marche sous FF3.5 et IE7. T'es sur d'avoir un problème? C'est quoi ton navigateur?


Message édité par lasnoufle le 14-06-2010 à 00:27:06

---------------
C'était vraiment très intéressant.
Reply

Marsh Posté le 18-06-2010 à 00:23:13    

Salut, désolé du retard j'étais en déplacement.
 
J'ai Firefox et sous Ie8 c'est pareil.
 
En fait, j'ai un autre souci mais le problème est similaire. Je fouille actuellement le code afin de voir si j'ai oublié quelque chose dans mon code.
voici le code: (je précise qu'il n'est pas propre, ce n'est qu'une ébauche.
 
Le souci se trouve au niveau de la form:
        <form method="post" action="" id="f_loginmgrmenu" name="f_loginmgrmenu">
          <input type="hidden" name="h_test" value="test" />
          <input type="hidden" name="h_btlogger" value="" />
          <a href="#" onclick="htmlPost_f_loginmgrmenu('editlogins')">EDIT</a>
        </form>
 
la valeur de btlogger passe nikel mais pas celle de h_test... alors que pour d'autres parties du site, cela fonctionne très bien...
 
 

Code :
  1. <div id="index">
  2.   <div id="page-middle">
  3.     <table id="liste_header">
  4.       <tr>
  5.         <td id="colClient_header">COL1</td>
  6.         <td id="colLogin_header">COL2</td>
  7.         <td id="colPassword_header">COL3</td>
  8.         <td id="colDescription_header">COL4</td>
  9.         <td id="colAdministration_header">COL5</td>
  10.       </tr>
  11.     </table>
  12.     <table id="liste">
  13.       <tr>
  14.         <td id="colClient"><table id="domaine_client" border="0">
  15.             <tr>
  16.               <td id="nom_domaines"><img src="images/icone_ANTIVIRUS.png" height="32" width="32" alt="ANTIVIRUS"></td>
  17.               <td id="tiret_client"><hr></td>
  18.               <td id="nom_clients"></td>
  19.             </tr>
  20.           </table></td>
  21.         <td id="colLogin"><div id="login">Usert</div></td>
  22.         <td id="colPassword">
  23.         <div id="password">
  24.         <a href="#" class="bulle" id="bulle">
  25. Voir Password
  26.         <span id="span_password">
  27.         <form id="f_d_Password" name="f_d_Password">
  28.         <input type="text" id="tb_d_Password" name="tb_d_Password" readonly onMouseOver="select();" value="bachibouzok" />
  29.         </span>
  30.         </a>
  31.         </div>
  32.         </td>
  33.         <td id="colDescription"><div id="description">MDP de test pour l'appli</div></td>
  34.         <td id="colAdministration">
  35.         <form method="post" action="" id="f_loginmgrmenu" name="f_loginmgrmenu">
  36.           <input type="hidden" name="h_test" value="test" />
  37.           <input type="hidden" name="h_btlogger" value="" />
  38.           <a href="#" onclick="htmlPost_f_loginmgrmenu('editlogins')">EDIT</a>
  39.         </form>
  40.         </td>
  41.       </tr>
  42.     </table>
  43.   </div>
  44. </div>


Message édité par headquaker le 18-06-2010 à 00:27:35
Reply

Marsh Posté le 18-06-2010 à 10:44:22    

Dans le dernier bout de code que t'as mis, tu fermes jamais la première balise <form>, 99% de chances que ca vienne de là.


---------------
C'était vraiment très intéressant.
Reply

Marsh Posté le 18-06-2010 à 10:44:22   

Reply

Marsh Posté le 18-06-2010 à 20:09:08    

Salut,  
 
bien vu mais c'est pas ca :(

Reply

Marsh Posté le 18-06-2010 à 23:24:18    

headquaker a écrit :

Salut,  
 
bien vu mais c'est pas ca :(


Ben je vais faire mon chiant, mais en faisant un c/c de ton code dans une page bidon, ca marche pour moi:

<html><head><script>
function htmlPost_f_loginmgrmenu(variable)
{
 alert(document.getElementById("f_loginmgrmenu" ).h_test.value);
 alert(document.getElementById("f_loginmgrmenu" ).h_btlogger.value);
}
</script><head><body>
 
<div id="index">
  <div id="page-middle">
    <table id="liste_header">
      <tr>
        <td id="colClient_header">COL1</td>
        <td id="colLogin_header">COL2</td>
        <td id="colPassword_header">COL3</td>
        <td id="colDescription_header">COL4</td>
        <td id="colAdministration_header">COL5</td>
      </tr>
    </table>
    <table id="liste">
      <tr>
        <td id="colClient"><table id="domaine_client" border="0">
            <tr>
              <td id="nom_domaines"><img src="images/icone_ANTIVIRUS.png" height="32" width="32" alt="ANTIVIRUS"></td>
              <td id="tiret_client"><hr></td>
              <td id="nom_clients"></td>
            </tr>
          </table></td>
        <td id="colLogin"><div id="login">Usert</div></td>
        <td id="colPassword">
        <div id="password">
        <a href="#" class="bulle" id="bulle">
Voir Password
        <span id="span_password">
        <form id="f_d_Password" name="f_d_Password">
        <input type="text" id="tb_d_Password" name="tb_d_Password" readonly onMouseOver="select();" value="bachibouzok" />
  </form>
        </span>
        </a>
        </div>
        </td>
        <td id="colDescription"><div id="description">MDP de test pour l'appli</div></td>
        <td id="colAdministration">
        <form method="post" action="" id="f_loginmgrmenu" name="f_loginmgrmenu">
          <input type="hidden" name="h_test" value="test" />
          <input type="hidden" name="h_btlogger" value="prout" />
          <a href="#" onclick="htmlPost_f_loginmgrmenu('editlogins')">EDIT</a>
        </form>
        </td>
      </tr>
    </table>
  </div>
</div>
</body></html>



---------------
C'était vraiment très intéressant.
Reply

Marsh Posté le 20-06-2010 à 01:39:50    

Ça marche, j'ai trouvé d'où venait le problème. J'avais un souci au niveau des noms de formulaire avec un doublon sur ma page.

Reply

Sujets relatifs:

Leave a Replay

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