具体代码如下
var HTML = "xxxxxxx";
HTML = "\r\n<SPAN id='"+ this.name +"_tree_"+ id +"'>"+ HTML
HTML +="<SPAN style='DISPLAY: none'></SPAN></SPAN>";当我递归去innerHTML一个元素后,
立刻用这个元素添加 innerHTML其他元素时候,会出现找不到元素的问题?有没有什么办法解决这个问题?
var HTML = "xxxxxxx";
HTML = "\r\n<SPAN id='"+ this.name +"_tree_"+ id +"'>"+ HTML
HTML +="<SPAN style='DISPLAY: none'></SPAN></SPAN>";当我递归去innerHTML一个元素后,
立刻用这个元素添加 innerHTML其他元素时候,会出现找不到元素的问题?有没有什么办法解决这个问题?
解决方案 »
- 一个滑动门效果在vs2010里报错
- sleep 之后 div 没有显示
- 怎样验证邮件中是否包含@和.这两个字符?谢谢了
- 这个DIV+JS效果是怎么实现的呢?大峡现身
- 急,请问javascript中onclick真假问题?
- 请指点一下javascript遍历服务器目录中图片,并显示的问题
- 如何动态合并单元格?
- 如何在javascript中实现对当前窗口的全屏和还原的控制,就象使用window.open("",null,"fullscreen =1")所打开的窗口一下?
- 还是屏蔽后退按钮的问题
- axios 跨域问题
- jquery replaceWith的问题 求助!
- 急急急急急急急急急! jquery获取元素
//这里再去调用
},0);
同认为APPENDCHILD好一点
innerHTML会影响DOM结构
var obj = document.createElement("SPAN");
obj.setAttribute("id",this.name +"_tree_"+ id);
document.getElementById("div").appendChild(obj);这样去追加元素 再用document.getElementById是可以获得到的 。
或者用jq$("#div").find("span") //也能找到里面的元素
setTimeout(mzTree.name +".asyncExpandNode('"+ snode.id +"')", 1); 递归调用然后在 asyncExpandNode 函数里面
mzTree.expand(node.id,true); 展开只是在expand这个函数里
document.getElementById的时候 出现这个问题
innerHTML被设置以后,实际上并没有马上创建相应的DOM,所以立刻就找的话是找不到的
而setTimeout就相当于一次中断,退出JS代码后,浏览器才会刷新创建相应的DOM
然后才能被正确找到
HTML = "\r\n<SPAN id='"+ this.name +"_tree_"+ id +"'>"+ HTML
HTML +="<SPAN style='DISPLAY: none'></SPAN></SPAN>";
对象.innerHTML=HTML;那么随后调document.getElementById取添加的内容就完全没问题。