我对这个脚本有问题。起初,我有<div>
s硬编码,它工作正常。但后来我需要动态改变导航栏,因为我改变了(数量)链接。如何在javascript中动态编写对象时注册DOM 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
它工作正常,在我的Firefox 11.0,所有的元素都标识。 (link0〜link5,submenu5) – 2012-04-03 22:10:46
我在firefox中得到这个错误:'document.getElementById(“submenu”+ pageNo)is NULL' 当我将'
'(其中10个)改为6动态生成在JavaScript中。 – Ozzy 2012-04-03 22:15:24