如何在javascript中动态编写对象时注册DOM id

How to register DOM id when writing objects dynamically in javascript?

本文关键字:对象 注册 DOM id javascript 动态      更新时间:2023-09-26

我对这个脚本有问题。起初,我对<div>进行了硬编码,它工作得很好。但后来我需要动态地更改导航栏,因为我更改了链接的数量。

问题是,当id被注入element.innerHTML=(html字符串)时,它们没有注册。

我该怎么解决这个问题?

这是代码:

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>

我在firefox:中收到这个错误

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

for循环的每次迭代过程中,都会覆盖submenu_layer_innerHTML。确保使用+=

尝试jQuery实时函数。。

$("div.something").live('click', function(){ 
  // do something...
});

constructNav未定义请尝试以下操作:http://jsfiddle.net/5GjNs/