引用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{
width: 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{
width: 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

原文地址:https://www.cnblogs.com/aoshuang/p/11109663.html

时间: 2024-10-29 19:10:10

引用echarts入坑之旅——Uncaught Error: Initialize failed: invalid dom.的相关文章

webpack入坑之旅(一)不是开始的开始

最近学习框架,选择了vue,然后接触到了vue中的单文件组件,官方推荐使用 Webpack + vue-loader构建这些单文件 Vue 组件,于是就开始了webpack的入坑之旅.因为原来没有用过任何的构建工具与模块化工具,所以本系列会十分的基础.并且可能有很多不正确的地方,希望大家谅解,并指出错误帮助改进.谢谢! 这是一系列文章,此系列所有的练习都存在了我的github仓库中vue-webpack,在本人有了新的理解与认识之后,会对文章有不定时的更正与更新.下面是目前完成的列表: webp

webpack入坑之旅(四)扬帆起航

这是一系列文章,此系列所有的练习都存在了我的github仓库中vue-webpack,在本人有了新的理解与认识之后,会对文章有不定时的更正与更新.下面是目前完成的列表: webpack入坑之旅(一)不是开始的开始 webpack入坑之旅(二)loader入门 webpack入坑之旅(三)webpack.config入门 webpack入坑之旅(四)扬帆起航 webpack入坑之旅(五)加载vue单文件组件 webpack入坑之旅(六)配合vue-router实现SPA 加载图片 现在来我们来试试

webpack入坑之旅(六)配合vue-router实现SPA

这是一系列文章,此系列所有的练习都存在了我的github仓库中vue-webpack,在本人有了新的理解与认识之后,会对文章有不定时的更正与更新.下面是目前完成的列表: webpack入坑之旅(一)不是开始的开始 webpack入坑之旅(二)loader入门 webpack入坑之旅(三)webpack.config入门 webpack入坑之旅(四)扬帆起航 webpack入坑之旅(五)加载vue单文件组件 webpack入坑之旅(六)配合vue-router实现SPA 在上面的练习当中我们已经成

webpack入坑之旅(五)加载vue单文件组件

这是一系列文章,此系列所有的练习都存在了我的github仓库中vue-webpack,在本人有了新的理解与认识之后,会对文章有不定时的更正与更新.下面是目前完成的列表: webpack入坑之旅(一)不是开始的开始 webpack入坑之旅(二)loader入门 webpack入坑之旅(三)webpack.config入门 webpack入坑之旅(四)扬帆起航 webpack入坑之旅(五)加载vue单文件组件 webpack入坑之旅(六)配合vue-router实现SPA 需要什么? 在经过前面的四

webpack入坑之旅(三)webpack.config入门

这是一系列文章,此系列所有的练习都存在了我的github仓库中vue-webpack,在本人有了新的理解与认识之后,会对文章有不定时的更正与更新.下面是目前完成的列表: webpack入坑之旅(一)不是开始的开始 webpack入坑之旅(二)loader入门 webpack入坑之旅(三)webpack.config入门 webpack入坑之旅(四)扬帆起航 webpack入坑之旅(五)加载vue单文件组件 webpack入坑之旅(六)配合vue-router实现SPA 在上面我们已经尝试过了两种

webpack入坑之旅(二)loader入门

这是一系列文章,此系列所有的练习都存在了我的github仓库中vue-webpack 在本人有了新的理解与认识之后,会对文章有不定时的更正与更新.下面是目前完成的列表: webpack入坑之旅(一)不是开始的开始 webpack入坑之旅(二)loader入门 webpack入坑之旅(三)webpack.config入门 webpack入坑之旅(四)扬帆起航 webpack入坑之旅(五)加载vue单文件组件 webpack入坑之旅(六)配合vue-router实现SPA 引子 在上一篇博客中我们已

android开发里跳过的坑——android studio 错误Error:Execution failed for task &#39;:processDebugManifest&#39;. &gt; Manifest merger failed with multiple errors, see logs

使用AS在gradle里配置了多个定制版本,发现在编译版本切换时,会出现错误: Error:Execution failed for task ':processDebugManifest'.> Manifest merger failed with multiple errors, see logsInformation:Gradle tasks [:app:generatePhoneWulianDebugSources, :app:mockableAndroidJar, :app:prepa

webpack入坑之旅(一)入门安装

学习一个新的东西,首先第一步就是安装,有时候会遇到各种奇葩的问题 至于什么是webpack我这里就不介绍了,请参考官网:https://github.com/webpack/webpack 安装 前提:因为webpack是一个基于node的项目,所以首先需要确保你的电脑里面已经安装了node.js,以及npm.在这里我使用的版本是:node:v5.8.0 ,npm:3.7.3,若是版本问题,请更新到最新版.若是有出现npm安装过慢的情况,可以使用nrm这个项目来进行npm源地址的切换. 首先我们

Android JNI入坑之旅(一):JNI的简单介绍

1.JNI简介 JNI全称为JavaNative Interface: 从Java1.1开始,JNI就成为java平台的一部分,它允许Java代码和其他语言写的代码(如C&C++)进行交互: 并非从Android发布才引入JNI的概念的. 2.什么是NDK? NDK全称为native development kit本地语言(C&C++)开发包: NDK提供了一些交叉编译工具链和Android自带的库: 这些Android的库可以让开发者在编写本地语言的程序时调用: 而NDK提供的交叉编译工