html加载规则

1、顺序加载

问题:js代码无法获取表单中的信息?

<!DOCTYPE html>  
<html lang="en">  
 <head>  
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <script type="text/javascript" src="jquery-1.8.3.js"></script>  
    <title>Html页面内容执行顺序</title>  
    <script type="text/javascript">  
        var userId = $('#hiddenUserId').val();  
        var contextPath = $('#hiddenContextPath').val();  
        var userName = $('#hiddenUserName').val();  
		alert(userName);
    </script>     
</head>  
<body>  
    <input type="hidden" id="hiddenUserId" value="101" />  
    <input type="hidden" id="hiddenContextPath" value="/web" />  
    <input type="hidden" id="hiddenUserName" value="小明" />  
</body>  
 </html> 

  1. 原因 ,html在顺序加载时还没有无法获取html元素;
  2. 解决方法1 将js代码移动到前
  3. 解决方法2 采用$(function(){});
// An highlighted block
<!DOCTYPE html>  
<html lang="en">  
 <head>  
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <script type="text/javascript" src="jquery-1.8.3.js"></script>  
    <title>Html页面内容执行顺序</title>     
	<script type="text/javascript">  
	$(function(){
		var userId = $('#hiddenUserId').val();  
        	var contextPath = $('#hiddenContextPath').val();  
        	var userName = $('#hiddenUserName').val();  
		alert(userName);
	});
    </script>  
</head>  
<body>  
    <input type="hidden" id="hiddenUserId" value="101" />  
    <input type="hidden" id="hiddenContextPath" value="/web" />  
    <input type="hidden" id="hiddenUserName" value="小明" /> 
</body>  
</html>  
  1. 解决方法3 采用window.onload(){};
// An highlighted block
<!DOCTYPE html>  
<html lang="en">  
  
<head>  
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <script type="text/javascript" src="jquery-1.8.3.js"></script>  
    <title>Html页面内容执行顺序</title>     
	<script type="text/javascript">  
	$(function () {
		alert("ready1111111111111执行");
	});
 
	$(function () {
		alert("ready222222222222222执行");
	});
 
	window.onload = function () {
		alert("onload11111111111111");
	};
	window.onload = function () {
		alert("onload2222222222222");
	}
        
    </script>  
</head>  
  
<body>  
    <input type="hidden" id="hiddenUserId" value="101" />  
    <input type="hidden" id="hiddenContextPath" value="/web" />  
    <input type="hidden" id="hiddenUserName" value="小明" /> 
</body>  
  
</html> 

总结:$(function(){})与window.onload(){}的区别

1、如果注册多个window.onload事件,事件会被覆盖,而且前面事件都不会执行;

2、而(function(){})则互不影响,在HTML文档树结构加载完毕(并不包括一些静态资源:比如图片等)才执行,在同一个页面,可以使用多个(function(){}),因为(function(){})是个闭包

3、window.onload 是在整个页面加载完成后(包括一些静态资源)才会被执行

4、DOM文档加载步骤:
解析HTML结构
加载外部的脚本和样式文件
解析并执行脚本代码
执行$(function(){})内对应代码
加载图片等二进制资源
页面加载完毕,执行window.onload

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值