关于JS的window.onload与$(function (){})方法区别,JS放在head和Body的区别

在调试页面的时候发现总找不到对象,总是报“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


  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值