这两天用jquery写一个菜单,分别用json和xml来作为数据格式,先说下大概的思路,就是在div里面加入ul,现在在读取xml的时候,出现以下症状:
1.数据读取出来了,也显示了,但是如果有子菜单,显示不出来!
2.于是我在另一个测试层show_div里面,打印出生成的代码:$('#show_div').text($('body').html());动态生成的ul,打印不出来!!!
3.最奇怪的事出现了,如果我在$('#show_div').text($('body').html());加上一句alert(),动态生成代码就显示出来了!!!!子菜单也显示出来了!!!!!!!!
这是神马情况?!!!!!!!!!!
请各位高手解决此问题!!!!,百分双手奉上!!!!!注:json格式下,没有此问题!!!!

解决方案 »

  1.   

    这个怎么可能呢,和alert没有一毛钱关系的,建议换一个浏览器试一下
      

  2.   

    如果是alert后就可以出现的话。
    应该是alert阻断了JS,使得在alert这段时间内,js处理完了数据。
    可以从这里找找看
      

  3.   

    不明白 为什么会这样
    不过我想你不管alert怎样
    内部的处理还是再继续
      

  4.   


    你的问题,可以修改write方法,让这个方法不用document.write,而是使用innerHTML或者DOM方式添加到容器中去。
    如果不想改那就只有用第一种方法了。。
    最多把 var tree = new WebFXLoadTree("我是树形菜单", "a.xml");
                          tree.write();
    改成loadTree();
      

  5.   

    你这个地方是不是用AJAX向后台读取了两次数据加载的?
      

  6.   

    无代码无真相,大家都在用猜测的口吻回答问题,肯定无法解决的!XML是有点怪,JQ对XML的请求都有浏览器区别!不知道楼主测试的时候用的是什么浏览器,是直接打开HTML文件来运行,还是在后台里运行的??
      

  7.   

    不知道你的XML是以什么形式存在的,又是怎么由当前的程序读取到的。无代码无真相
      

  8.   

    应该是dom 没加载完!还是贴代码吧
      

  9.   

    这个动态加载的信息,应该是用AJAX从后台通过json和xml来返回的吧。这个情况,ALERT并非是让JS如何了,而是让异步执行的AJAX请求能够得到完成。楼主的语句“$('#show_div').text($('body').html());”放置位置不对,应该在请求完成的处理事件里。这样就差不多了(你具体情况不太了解)。或者是让AJAX请求使用同步方式。这样,直到AJAX请求数据返回后才会运行下面的JS语句,也能可以。
      

  10.   

    你现在是动态显示的吧
    你先用一样的Html代码,看静态能否正常显示也有可能是js错误,或者是样式问题导致不显示
      

  11.   

    alert会停止执行它后面的代码,如果像你这种情况的话确实可能是数据没有加载完你就去取数据了,14楼说的对如果你是ajax请求的数据看取数据的位置是否正确,或通过延时试试看
    顺便借地方用下群号36466679正在发展中,欢迎各位js,css,asp.net,和数据库爱好者加入本群
      

  12.   

    alert不会阶段数据流的alert只会让程序进行简单的sleep而已当然,如果你正在操作XML或者别的什么可能有超市信息的空间的时候,你alert出现了很久都不处理的话,当然会出现你的那种情况了。
      

  13.   

    每个用ajax都会碰到的问题
    ajax 同步和异步问题 按这个主题搜索和检查代码