浏览 8013 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-12-11
我们一般是通过 document.createElement("") 来创建HTML元素,但是这样就存在一个问题,必须在JS里写大量的 createElement 等代码,带来维护困难的烦恼,现在我想定义一个字符串变量,然后把这个字符串 appendChild 到页面上,例如以下代码: <body> <script language="JavaScript"> <!-- function test() { alert('test'); } var string = '<div style="background:red;width:300px;"><button onclick="' + test + '">HelloWorld</button></div>'; window.onload=function(){ var div1 = document.getElementById("div1"); var txtNode = document.createDocumentFragment(string); // div1.appendChild(txtNode); div1.innerHTML = string; } //--> </script> <div id="div1"></div> </body> 先创建一个文档片断,然后我想把这个片断 appendChild 到div1,失败。 然后我用innerHTML,这个时候 button的onclick事件执行不了 文档片断是应该appendChild到页面的,但是这里为什么不行?? 用innerHTML的话如果要保留之前的innerHTML并且要对新的HTML插入的位置做调整还是很麻烦,所以我不推荐使用innerHTML。 有什么好办法避免使用大量的 createElement 创建HTML元素????(要兼容firefox) 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2006-12-11
http://www.jackslocum.com/blog/examples/domhelper.php
dom没必要自己写,先找找工具! 对于w3cdom vs innerHTML可以看http://www.quirksmode.org/dom/innerhtml.html innerHTML快很多。 clone Node你也可以考虑考虑。 <button onclick="test()">HelloWorld</button> 这样写才对吧?注册事件我觉得应该最后处理,通过prototype.jsEvent.on 或dojo的connect()等注册 |
|
返回顶楼 | |
发表时间:2006-12-11
zkj_beyond,好久没看你的BLOG了,呵呵
DOM是没必要自己写,把dojo的DOM操作抽出来就可以了 innerHTML是比W3CDOM快很多,只是当你用innerHTML += 操作时需要对页面元素渲染多次,这样效率上会降低,所以用 createDocumentFragment 更好 至于我提出的问题只是觉得用 createElement 太麻烦,页面难以维护,因为在创建元素时你不能在代码里看到HTML元素的结构,dojo的templateString 就能看到元素的大概样子,但是看了dojo的实现也是用innerHTML,看来还是无法避免使用innerHTML。。。 我貌似有点将简单事情复杂化了 -.-!! |
|
返回顶楼 | |
发表时间:2006-12-16
var string = '<div style="background:red;width:300px;"><button onclick="test();">HelloWorld</button></div>';看看你的那句和我的是否一致。呵呵,其实你的onclick事件就写错了。看来你对onclick的用法不熟。改正过来onclick就会执行。
|
|
返回顶楼 | |