zoukankan      html  css  js  c++  java
  • 引用echarts入坑之旅——Uncaught Error: Initialize failed: invalid dom.

    在aspx引入echarts出现这样报错:

    错误分析
    我的js代码段写在body标签之前,浏览器加载时会先去解析js代码,当浏览器执行document.getElementById('main')时,由于id为main的dom对象还未被创建,报错Initialize failed: invalid dom.

    Jquery教程中明确指出,为了防止文档在完全加载(就绪)之前运行 jQuery 代码,你必须保证此文档已就绪。如果在文档没有完全加载之前就运行函数,操作可能失败。下面是两个具体的例子:

               【1】试图隐藏一个不存在的元素

               【2】获得未完全加载的图像的大小

    • 解决方法​​​​​​​

     (1)使用jquery提供的document ready 函数,引入jquery.min.js文件,将自己的js代码放入函数中即可解决。(建议使用这种方法,将js代码放在head标签内部,使你的代码可读性更强,同时便于维护。)

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Echarts入门案例</title>
    <!-- 引入 开发环境的echarts.js -->
    <script src="js/echarts.js"></script>
    <script src="js/jquery-1.9.1.min.js"></script>
    <script type="text/javascript">
    /* js代码放在body之前,会导致初始化dom失败,原因是js在dom容器被创建之前执行,此时用js去获取还未被创建的dom,肯定就报错了。
    解决方法,
    1.使用jquery的 document ready 函数[防止文档在完全加载(就绪)之前运行 jQuery(或者自定义JS) 代码,即在 DOM 加载完成后才可以对 DOM 进行操作。]
    2.此部分js代码放置于<body>后面
    */
    $(document).ready(function(){
    //初始化echarts实例
    var myChart = echarts.init(document.getElementById('main'));
    //指定图表配置项和数据
    var option = {
    title:{
    text:'Echarts入门案例'
    },
    tooltip:{},
    legend:{
    data:['销量']
    },
    xAxis:{
    data:["苹果","香蕉","梨","橘子","火龙果","西瓜"]
    },
    yAxis:{},
    series:[{
    name:'销量',
    type:'bar',
    data: [6,18,15,10,28,45]
    }]
    };
    // 使用指定的配置项和数据显示图表。
    myChart.setOption(option);
    });
    </script>
    <!-- 声明DOM容器对象,为ECharts准备一个具备大小(宽高)的Dom -->
    <style type="text/css">
    #main{
    600px;
    height:400px;
    }
    </style>
    </head>
    <body>
    <div id="main">
    </div>
    </body>
    </html>

    (2)将操作相应dom元素的js代码放到body之后,即让该dom就绪后再操作它。

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>测试页面</title>
    <!-- 引入 开发环境的echarts.js -->
    <script src="js/echarts.js"></script>
    <!-- 声明DOM容器对象,为ECharts准备一个具备大小(宽高)的Dom -->
    <style type="text/css">
    #main{
    600px;
    height:400px;
    }
    </style>
    </head>
    <body>
    <div id="main">
    </div>
    </body>
    <script type="text/javascript">
    //初始化echarts实例
    var myChart = echarts.init(document.getElementById('main'));
    //指定图表配置项和数据
    var option = {
    title:{
    text:'Echarts入门案例'
    },
    tooltip:{},
    legend:{
    data:['销量']
    },
    xAxis:{
    data:["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
    },
    yAxis:{},
    series:[{
    name:'销量',
    type:'bar',
    data: [6,18,15,10,28,45]
    }]
    };
    //用指定的配置项和数据显示图表。
    myChart.setOption(option);
    </script>
    </html>


    感谢原文:https://blog.csdn.net/xb_2015/article/details/85337187

  • 相关阅读:
    MFC STATIC,Picture控件使用及无法添加变量的问题
    MFC listctrl NMCLICK消息 错误 无法从"NMHDR*"转换为"NMITEMACTIVATE"
    vs2008中将开始执行按钮(不调试按钮)添加至标准工具栏方法
    MFC 删除工具栏 默认对话框全屏 修改MFC标题栏的文字 删除菜单栏
    Visual Assist X设置
    MFC禁止窗口最大化按钮和禁止改变窗口大小
    MFC从头开始如何利用MFC分割窗口
    MFC CSplitterWnd窗口分割
    关于VS2008下提示microsoft incremental linker已停止工作的问题
    windows 下codeblocks查看容器值
  • 原文地址:https://www.cnblogs.com/aoshuang/p/11109663.html
Copyright © 2011-2022 走看看