JavaScript的加载执行顺序

有多种方式可以将JavaScript包含到html页面中,如果不是动态加载脚本或者将其标记为延迟或异步,则按照页面中遇到的顺序加载脚本

< script >
        var button = document . getElementsByTagName ( 'input' );
        button . addEventListener ( 'click' , function () {
            var content = document . getElementsByTagName ( 'p' );
            content . style . background = "red" ;
        })
    < / script >
</ head >

< body >
    < div >
        < p > Welcome to the world!!! </ p >
        < input type = "submit" value = "点我" >
    </ div >
</ body >

按照传统的做法所有<script>元素都应该放在页面的<head>元素中。这种做法的目的是把所有外部文件的引用放在相同的地方,可是,在文档<head>元素中包含JavaScript文件,意味着必须等到全部JavaScript代码都被下载解析和执行完之后,才能开始呈现页面的内容,对于需要很多JavaScript代码的页面来说,这无疑会导致浏览器在呈现页面时出现明显的延迟。

因为body是在head之后加载,因此在head的script脚本并不能找到body中的元素,所以当script脚本执行的时候div并不存在。

解决方案:

1. 将script放在body的结尾

好了,另外一个问题出现了,我发现好像这个程序并没有起任何的作用,才发现

document . getElementsByTagName

的类型是NodeListOf,而我们只能给单个element.addEventListener,所以

var button = document . getElementsByTagName ( 'input' )[ 0 ]

才是正确的写法。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值