首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 关于div赋值的执行顺序问题!请教啊
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • kisslan
    • 等级:
    发表于:2008-05-08 14:15:19 楼主
    在init函数里面,是一下都加载完,直到$("five").innerHTML='five';语句执行后
    HTML才开始在页面上显示 <div id="one"> </div>的内容。还是执行了$("one").innerHTML='one';后HTML页面的one DIV就会显示"one"字符。
    如果是全部执行完了才显示!有没有办法能执行一个赋值,就在HTML页面里面显示一个啊?
    start.html
    JScript code
    <html> <head> <script src="start.js" type="text/javascript"></script> </head> <body> <div id="one"></div> <div id="two"></div> <div id="three"></div> <div id="four"></div> <div id="five"></div> </body> </html> <script> init(); </script>



    start.js
    JScript code
    function $(id) { return document.getElementById(id); } function init() { $("one").innerHTML='one'; $("two").innerHTML='two'; $("three").innerHTML='three'; $("four").innerHTML='four'; $("five").innerHTML='five'; }
    300  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • songpengasp
    • 等级:
    发表于:2008-05-08 14:35:111楼 得分:0
    顺序加载 执行 

    1、加载脚本

    2、显示IDV

    3、赋值 

    4、显示DIV新的值

    因为加载比较快 看到的效果就是直接显示赋值过的DIV


    脚本执行完才显示效果是因为js执行有个线程

    执行一个显示一个  那就用异步吧  设个定时器  我做过的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 14:36:052楼 得分:0
    HTML code
    <html> <head> <script type="text/javascript"> function $(id) { return document.getElementById(id); } function init() { $("one").innerHTML='one'; alert('see');//可以看到已经赋值了 $("two").innerHTML='two'; $("three").innerHTML='three'; $("four").innerHTML='four'; $("five").innerHTML='five'; } </script> </head> <body> <div id="one"></div> <div id="two"></div> <div id="three"></div> <div id="four"></div> <div id="five"></div> </body> </html> <script> init(); </script>
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 14:39:093楼 得分:0
    HTML code
    window.onload=init;//这样确保所有信息都加载完后再执行init函数
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zl_c
    • 等级:
    发表于:2008-05-08 14:44:444楼 得分:0
    应该是执行一个赋值,在HTML页面里面显示一个,时间太短了,察觉不到时间差.用个定时器吧.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • qiuming0306
    • 等级:
    发表于:2008-05-08 14:46:215楼 得分:0
    在JS内加时间函数吧!过一段时间执行一个!否则时间太短你看不到一个一个变化的效果@!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 14:51:566楼 得分:0
    关于显示顺序,并不难
    <html>
         <head>
             <script src="start.js" type="text/javascript"> </script> <!-- 这里开始加载start.js,把里面的函数和方法及对象加载到客户端-->
         </head>
         <body>
                 <div id="one"> </div>
                 <div id="two"> </div>
                 <div id="three"> </div>
                 <div id="four"> </div>
                 <div id="five"> </div>
         </body>
    </html>

    <script>
            init();//这里开始调用已经加载的函数
    </script>

    function $(id) {{//这个函数在加载start.js时已加载完毕
        return document.getElementById(id);
    }
    function init() {//这个函数在加载start.js时已加载完毕
        $("one").innerHTML='one';//执行这个在网页上已赋值显示
        $("two").innerHTML='two';//这个是几乎同时与上面的执行的,间隔很小,执行速度快,看不出明显的效果,以下一样
        $("three").innerHTML='three';
        $("four").innerHTML='four';
        $("five").innerHTML='five';
    }

    如果想要看到效果,对每个进行延时吧,或者再异步加载


    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • songpengasp
    • 等级:
    发表于:2008-05-08 15:00:437楼 得分:0
    引用 4 楼 zl_c 的回复:
    应该是执行一个赋值,在HTML页面里面显示一个,时间太短了,察觉不到时间差.用个定时器吧.


    是所有的赋值结束 甚至 所在脚本执行完 才会在HTML页面显示赋值结果 
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 15:03:088楼 得分:0
    JScript code
    function init() { $("one").innerHTML='one'; alert('one'); $("two").innerHTML='two'; alert('two'); $("three").innerHTML='three'; alert('three'); $("four").innerHTML='four'; alert('four'); $("five").innerHTML='five'; alert('five'); }

    你把这个函数变成这个就能看到他的赋值顺序了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • songpengasp
    • 等级:
    发表于:2008-05-08 15:03:459楼 得分:0
    为了查看效果你可以这样做个试验

    每一个赋值之前增加一个耗时的操作 例如 同步请求服务器上一个执行时间比较长的页面


    效果就是最后同时显示执行效果
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 15:05:0410楼 得分:0
    引用 7 楼 songpengasp 的回复:
    引用 4 楼 zl_c 的回复:
    应该是执行一个赋值,在HTML页面里面显示一个,时间太短了,察觉不到时间差.用个定时器吧. 
     

    是所有的赋值结束 甚至 所在脚本执行完 才会在HTML页面显示赋值结果 


    是所有的赋值结束 甚至 所在脚本执行完 才会在HTML页面显示赋值结果 
    这个是不对的哦,你用我给你的例子一看就知道了,应该是时间太短,几乎是同时执行的,间隔很小,执行速度快,看不出明显的效果
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • songpengasp
    • 等级:
    发表于:2008-05-08 15:05:2611楼 得分:0
    加 alert  并不能说明该问题
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 15:06:3212楼 得分:0
    并不是你说的所有的赋值结束 甚至 所在脚本执行完 才会在HTML页面显示赋值结果  
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • songpengasp
    • 等级:
    发表于:2008-05-08 15:06:4613楼 得分:0
    我也可以 做个例子说明我的解释
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • songpengasp
    • 等级:
    发表于:2008-05-08 15:07:2614楼 得分:0
    我来做个例子吧
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 15:07:5915楼 得分:0
    引用 11 楼 songpengasp 的回复:
    加 alert  并不能说明该问题 

    加一个alert就能完全的说明
    如果按你说的所有的赋值结束 甚至 所在脚本执行完 才会在HTML页面显示赋值结果,那么执行一个alert,是不应该出现一个值的,完全下面的还没进行赋值
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 15:09:4616楼 得分:0
    引用 14 楼 songpengasp 的回复:
    我来做个例子吧


    试试看!你就在他的这个基础上做!
    不要拿别的例子,执行方法和方式与他不一样的,另当别论!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 15:11:2317楼 得分:0
    是所有的赋值结束 甚至 所在脚本执行完 才会在HTML页面显示赋值结果  
    按你的这个说法,他应该是在弹出alert('four');
    这个以后才会同时在页面上显示几个值
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • kisslan
    • 等级:
    发表于:2008-05-08 15:14:3218楼 得分:0
    HTML code

    JScript code
    <html> <head> <script type="text/javascript"> function $(id) { return document.getElementById(id); } function init() { $("one").innerHTML='one'; alert('see');//可以看到已经赋值了 $("two").innerHTML='two'; $("three").innerHTML='three'; $("four").innerHTML='four'; $("five").innerHTML='five'; } </script> </head> <body> <div id="one"></div> <div id="two"></div> <div id="three"></div> <div id="four"></div> <div id="five"></div> </body> </html> <script> init(); </script>


    -----------------------------

    这个例子确实说明了,是执行  $("one").innerHTML='one'; 语句后,HTML会立刻显示one字符在页面上!
    另外!我现情况是,执行一个HTML,这个HTML会,加载一个JSON格式的JS,因为数据有些大
    所以刷新的时候画面会白一下,用户体验不是很好!我的想法是先显示出一部分来。但是如果按照
    执行完一句 $("one").innerHTML='one';就会立刻显示出来的话。就不用用什么特别的方法一部分一部分的显示了!
    可是我的页面白一下不知道有没有什么办法!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 15:21:1019楼 得分:0
     那模拟个loadding.....进度条 判断页面是否加载完毕
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 15:21:3120楼 得分:0
    白一下??这个需要加载JS的,再加载JS的时候页面空白一下是正常的,你可以做一个滚动条的提示,说明数据正在加载!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 15:23:3121楼 得分:0
    如果想按顺序来可以采用onpropertychange来依次触发
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 15:32:5322楼 得分:0
    引用 14 楼 songpengasp 的回复:
    我来做个例子吧

    汗!!
    你在他的基础上做什么例子说明啊?这么久还没出来
    别到时帖的是一个方式和执行方式不一样的例子出来,会BS你的哦(^_^,开个玩笑)!

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • songpengasp
    • 等级:
    发表于:2008-05-08 15:34:4023楼 得分:0
    JScript code
    function $(id) { return document.getElementById(id); } function getData() { var vXmlHTTP = new ActiveXObject("Microsoft.XMLHTTP"); var vUrl = "http://topic.csdn.net/u/20080508/14/2691f29f-75f2-49c5-876c-57ce0d72ebdf.html?seed=" + parseInt(Math.random()*1000); if ( ! vXmlHTTP) { alert("Microsoft.XMLHTT创建错误!"); return; } vXmlHTTP.open("POST", vUrl, false); vXmlHTTP.send(); } function dely_function() { for(var i=0;i<10;i++) { getData(); } } function init() { dely_function(); $("one").innerHTML='one'; alert("aaa"); dely_function(); $("two").innerHTML='two'; dely_function(); $("three").innerHTML='three'; dely_function(); $("four").innerHTML='four'; dely_function(); $("five").innerHTML='five'; }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • songpengasp
    • 等级:
    发表于:2008-05-08 15:35:1724楼 得分:0
    不要意思 诸位久等了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • songpengasp
    • 等级:
    发表于:2008-05-08 15:42:2225楼 得分:0
    加alert是可以显示出第一个div 的值

    但是 2345 div 还是同时显示的 

    貌似delay写错   -_-
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 15:42:4826楼 得分:0
    你自己测试了没哦?
    修改