Small_Tg 2019-11-07 17:07 采纳率: 0%
浏览 437

html中的onload函数执行不完整有时候

原代码就不展示了,以下代码所表达的意思相同

<html>
    <head>
        <title>标题</title>
        <meta content="text/html;charset=utf-8"/>
        <script type="text/javascript">
            function picture(){
                var img1 = "${mImg.img1}";  /*el表达式*/
                if(img1 != null && img1 != undefined){
                    var html1 = '';
                    html1 += "<img src='images/1.png' />"
                    $('#img1').append(html1);
                }

                var img2 = "${mImg.img2}";  /*el表达式*/
                if(img2 != null && img2 != undefined){
                    var html2 = '';
                    html2 += "<img src='images/1.png' />"
                    $('#img2').append(html2);
                }
            }
        </script>
    <head>
    <body onload="picture()">
        <table>
            <tr>
                <td id="img1">

                </td>
                <td id="img2">

                </td>
            </tr>
        <table>
    </body>
</html>

测试的时候就出现了问题,img1没问题,始终能出来的,但是img2有时候就出不来,特别是第一次加载这个页面的时候。后来实在找不出原因我就把onload函数换成了jquery的$(function(){})函数就没有这样的bug,请教一下这是为什么,望大佬们出来解释一下!谢谢!!!

  • 写回答

1条回答 默认 最新

  • Kevin.Y.K 2019-11-07 17:37
    关注

    你试一下下面的代码,先弹出了alert,页面再显示内容,就知道加载顺序了,body的onload在body的内容渲染之前就开始执行了。

    而你的picture()是要取页面的元素并赋值,如果对应的元素还没有渲染出来,你赋值肯定失败了。
    而jquery的$(function(){})是在页面渲染完成后开始执行的,所以没问题

    <!DOCTYPE html>
    <html>
    <head>
    <script>
    function load()
    {
    alert("页面已加载!");
    }
    </script>
    </head>
    
    <body onload="load()">
    <h1>Hello World!</h1>
    </body>
    
    </html>
    
    评论

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘