在调试页面的时候发现总找不到对象,总是报“undefined”。最后发现原来是JS位置的问题。
注意点一:
使用highcharts时jquery.min.js 文件必须放在highcharts.js前面。不然highchart.js会报错。
正确顺序:
<script type="text/javascript" src="JS/jquery.min.js"></script>
<script type="text/javascript" src="JS/highcharts.js"></script>
注意点二:
以下这种写法,是错误的。你会发现页面并没有呈现chart图。
<head>
<script type="text/javascript" src="JS/jquery.min.js"></script>
<script type="text/javascript" src="JS/highcharts.js"></script>
<script type="text/javascript" src="<%=ResolveUrl("JS/WaferYieldTrendCharts.js?t=" + System.DateTime.Now)%>"></script>
<title></title>
<script>
$('#container').highcharts({
chart: {
type: 'bar'
},
title: {
text: '各洲不同时间的人口条形图'
},
subtitle: {
text: '数据来源: Wikipedia.org'
},
xAxis: {
categories: ['非洲', '美洲', '亚洲', '欧洲', '大洋洲'],
title: {
text: null
}
},
yAxis: {
min: 0,
title: {
text: '人口总量 (百万)',
align: 'high'
},
labels: {
overflow: 'justify'
}
},
tooltip: {
valueSuffix: ' 百万'
},
plotOptions: {
bar: {
dataLabels: {
enabled: true,
allowOverlap: true
}
}
},
legend: {
layout: 'vertical',
align: 'right',
verticalAlign: 'top',
x: -40,
y: 100,
floating: true,
borderWidth: 1,
backgroundColor: ((Highcharts.theme && Highcharts.theme.legendBackgroundColor) || '#FFFFFF'),
shadow: true
},
credits: {
enabled: false
},
series: [{
name: '1800 年',
data: [107, 31, 635, 203, 2]
}, {
name: '1900 年',
data: [133, 156, 947, 408, 6]
}, {
name: '2008 年',
data: [973, 914, 4054, 732, 34]
}]
});
</script>
</head>
<body>
<div id="container" style="min-width:400px;height:400px"></div>
</body>
解决方法一:
然而,我调试发现 如果我们在获取$('#container')前加上
$(function () {
//代码})
调用成功。
解决方法二:
加上
window.onload = function () {
//代码}
调用成功。
解决方法三:
把script内容放在body下。
调用成功。
以下是转载内容:
先说window.onload与$(function () {})的原理:
window.onload必须等到页面内包括图片的所有元素加载完毕后才能执行。
$(function (){})==$(document).ready()是DOM结构绘制完毕后就执行,不必等到加载完毕。
以下是他们两者区别:
1.执行时间
window.onload必须等到页面内包括图片的所有元素加载完毕后才能执行。
$(document).ready()是DOM结构绘制完毕后就执行,不必等到加载完毕。
2.编写个数不同
window.onload不能同时编写多个,如果有多个window.onload方法,只会执行一个
$(document).ready()可以同时编写多个,并且都可以得到执行
3.简化写法
window.onload没有简化写法
$(document).ready(function(){})可以简写成$(function(){});
另外,需要注意一点,由于在 $(document).ready() 方法内注册的事件,只要 DOM 就绪就会被执行,因此可能此时元素的关联文件未下载完。例如与图片有关的 html 下载完毕,并且已经解析为 DOM 树了,但很有可能图片还没有加载完毕,所以例如图片的高度和宽度这样的属性此时不一定有效。要解决这个问题,可以使用 Jquery 中另一个关于页面加载的方法 ---load() 方法。 Load() 方法会在元素的 onload 事件中绑定一个处理函数。如果处理函数绑定给 window 对象,则会在所有内容 ( 包括窗口、框架、对象和图像等 ) 加载完毕后触发,如果处理函数绑定在元素上,则会在元素的内容加载完毕后触发。
Jquery 代码如下:
$(window).load(function (){
// 编写代码
});等价于 JavaScript 中的以下代码
Window.onload = function (){
// 编写代码
}
http://www.cnblogs.com/linjiqin/archive/2011/08/03/2126672.html
JS放在head和Body的区别
JavaScript脚本放在哪里
在HTML body部分中的JavaScripts会在页面加载的时候被执行。
在HTML head部分中的JavaScripts会在被调用的时候才执行。
JavaScript应放在哪里
页面中的JavaScripts会在浏览器加载页面的时候被立即执行,我们并不希望总是这样,有时候我们想让一段脚本在页面加载的时候执行,而有时候我们想在用户触发一个事件的时候执行脚本。
head 部分中的脚本: 需调用才执行的脚本或事件触发执行的脚本放在HTML的head部分中。当你把脚本放在head部分中时,可以保证脚本在任何调用之前被加载。
<html>
<head>
<script type=”text/javascript”>
….
</script>
</head>
body 部分中的脚本: 当页面被加载时执行的脚本放在HTML的body部分。放在body部分的脚本通常被用来生成页面的内容。
<html>
<head>
</head>
<body>
<script type=”text/javascript”>
….
</script>
</body>
body 和 head 部分可同时有脚本:你可在文件中放无数的脚本,因此你的文件中可以在body和head部分同时存在脚本。
<html>
<head>
<script type=”text/javascript”>
….
</script>
</head>
<body>
<script type=”text/javascript”>
….
</script>
</body>
外部脚本的使用
有时候你可能想在几个页面中运行同样的脚本程序, 而不需在各个页面中重复的写这些代码。这时你就要用到外部脚本。你可以把脚本写在一个外部文件中,保存在扩展名为 .js的文件中。
注意:外部脚本文件中不要包含标记符<script>!
使用外部脚本时将标记符<script> 的“src”属性值指向相应的.js文件就可以了:
<html>
<head>
<script src=”xxx.js”></script>
</head>
<body>
</body>
</html>
注意: 记得这个指向外部脚本文件的script标记符就放在你通常会写脚本的地方!
1:将JavaScript标识放置<Head>... </Head>在头部之间,使之在主页和其余部分代码之前预先装载,从而可使代码的功能更强大; 比如对*.js文件的提前调用。 也就是说把代码放在<head>区在页面载入的时候,就同时载入了代码,你在<body>区调用时就不需要再载入代码了,速度就提高了,这种区别在小程序上是看不出的,当运行很大很复杂的程序时,就可以看出了。当然也可以将JavaScript标识放置在<Body>... </Body>主体之间以实现某些部分动态地创建文档。 这里比如制作鼠标跟随事件,肯定只有当页面加载后再进行对鼠标坐标的计算。或者是filter滤镜与javascript的联合使用产生的图片淡入淡出效果
2:放入html的head,是页面加载前就运行,放入body中,则加载后才运行javascript的代码~~~
所以head里面的先执行。
3:要是function就没有区别要是<script>alert(1)</script>会跟放的位置有关一个事head加载完就 alert 一个是要跟在body中加载循序alert
客户端脚本一般放在 <head> </head> 之间,而且要用 <!-- --> 把代码括起来。
如果浏览器不支持此脚本,那么浏览器会
跳过它,不去执行,也不会提出错误信息
原文地址:http://blog.csdn.net/business122/article/details/7954225