如何在javascript中动态编写对象时注册DOM id
How to register DOM id when writing objects dynamically in javascript?
我对这个脚本有问题。起初,我对<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/
相关文章:
- 引用对象中的通用值
- jQuery匹配JSON对象的部分文本
- 节点导出返回一个空对象
- 如何在Javascript中将JSon对象转换为数组
- 我可以在json对象中添加一个函数吗
- 如何从已注册的事件发送 JavaScript 对象
- 如何从帖子对象添加其他信息以在护照中注册用户
- 使用firebase在用户注册对象上设置密钥
- 无法在注册为 Angular 服务的 ES6 类中共享对象
- 在 IE8 中将文件系统对象注册为安全的脚本
- 从尚未注册到 DOM 的 jquery 对象中删除元素
- 在使用 Passport 注册后将表示用户的对象添加到数组中
- 如何在javascript中动态编写对象时注册DOM id
- 注册MouseMove:事件对象始终未定义
- 用Jquery创建的对象注册一个已有的事件处理程序
- 向对象添加骨干事件,不注册"on"事件
- 如何注册一个onclick事件,以便它知道从哪个对象调用它
- 在RequireJS中注册许多对象
- 如何有效地将DOM事件注册到特定的JavaScript对象实例
- Javascript对象构造函数不注册参数