html引入js和css问题

引入js文件不能用缩写。

<script type="text/javascript" src="inc/aa.js"></script>

不能写成:

<script type="text/javascript" src="inc/aa.js"/>

这样可能会导致解析失败,后面的js就不执行了。


引入css文件可以用完整写法也可以用缩写。

<link rel="stylesheet" type="text/css" href="inc/aa.css"></link>

<link rel="stylesheet" type="text/css" href="inc/aa.css"/>


aa.js的代码为:

function f() {
	alert(1);
}

aa.css的代码为:

body{
	COLOR:#AA0000;
	background:#ccffdd;
}

引入js和css文件的html为:

<html>
<head>
<script type="text/javascript" src="aa.js"></script>
<link rel="stylesheet" type="text/css" href="aa.css"/>
</head>
<body οnlοad="f();">
</body>
</html>

直接在html中嵌入js和css块的html为:

<html>
<head>
<script>
function f() {
	alert(1);
}
</script>
<style>
body{
	COLOR:#AA0000;
	background:#ccffdd;
}
</style>
</head>
<body οnlοad="f();">
</body>
</html>

bb.js的代码是:

function f2() {
	alert(2);
}

如果html文件写成:

<html>
<head>
<script type="text/javascript" src="aa.js"/>
<script type="text/javascript" src="bb.js"></script>
</head>
<body οnlοad="f2();">
</body>
</html>

是不会弹出2的,而如果onload写成"f();"还是会弹出1的,说明js错误的写成简写的话,当前引入的js文件还是可以引入的,后面的就不行了。

同样的,html写成

<html>
<head>
<script type="text/javascript" src="aa.js"></script>
<script type="text/javascript">
function f2() {
	alert(2);
}
</script>
</head>
<body οnlοad="f2();">
</body>
</html>
也是不会弹出2的。


引入js文件的顺序是无所谓的,除非引入的文件在声明的时候就用到了其他的文件。

比如aa.js中定义了一个Object变量,window.user={name: 'xiaoming',age: 20};而bb.js中直接使用了window.user.name,那么就要把aa.js在bb.js之前引入。

而如果bb.js中是这么使用window.user的:

function dealUser() {
	alert(window.user.name);
}
那么引入的顺序就无所谓了。

嵌入代码块和引用js文件的顺序跟引入多个js文件之间的顺序是一样的。


对于上面引入js文件用了缩写的情况,如果缩写的是最后一个引入的js:

<html>
<head>
<script type="text/javascript" src="aa.js"></script>
<script type="text/javascript" src="bb.js"/>
</head>
<body οnlοad="f();">
</body>
</html>

这样是可以弹出1的。


但是如果是js代码块和引入js文件混搭而引入的js又缩写了:

<html>
<head>
<script type="text/javascript">
function f() {
	alert(1);
}
</script>
<script type="text/javascript" src="bb.js"/>
</head>
<body οnlοad="f();">
</body>
</html>

这样是不会弹出1的。

js的执行顺序是没有问题的,先定义了f,后定义了f2,整个html跑完的时候window也是有f这个方法的,所以问题是出在body加载完成后并没有执行f,而同样是放在缩写的js引入后,上面引入两个js文件的却可以,具体是什么逻辑就不晓得了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值