2 votes

Comment enregistrer l'identifiant DOM lors de l'écriture dynamique d'objets en javascript ?

J'ai un problème avec ce script. Au début, j'avais le <div> s codé en dur et cela fonctionnait bien. Mais ensuite, j'ai dû modifier la barre de navigation de manière dynamique parce que j'ai changé le (nombre de) liens.

Le problème est que les identifiants ne s'enregistrent pas lorsqu'ils sont injectés à l'aide de la fonction element .innerHTML = (chaîne html).

Comment puis-je réparer cela ?

Voici le code :

javascript :

 function constructNav() {
   var submenu_layer_innerHTML = "";
   var top_nav_innerHTML = "<UL class=\"nav_category\">";
   for (i=0; i<links.length; i++) {
     submenu_layer_innerHTML = "<div class=\"submenu\" id=\"submenu" + i + "\" onMouseOut=\"timeHideNav('" + i + "','1000')\"> </div>";
     top_nav_innerHTML += "<LI id=\"link" + i + "\"><a href=# onMouseOver=\"expandNav('" + i + "');\">" + links[i] + "</a></LI>";
   }
   top_nav_innerHTML += "</UL>";
   document.getElementById("top_nav").innerHTML = top_nav_innerHTML;
   document.getElementById("submenu_layer").innerHTML = submenu_layer_innerHTML;
 }

html :

<script type="text/javascript" src="scripts.js"> </script>
<script type="text/javascript">
var links =["link 1",
    "link 2",
    "link 3",
    "link 4",
    "link 5",
    "link 6"];
</script>

<body onLoad="constructNav();">

<div id="submenu_layer"> </div>
<div id="top_nav"> </div>

J'obtiens cette erreur dans firefox :

  line 35: document.getElementById("submenu"+pageNo) is NULL

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X