JavaScript代码-----位置决定结果
刚学JavaScript的时候,即使照着书上的代码敲一遍,运行的时候,得到的结果要么总是和书上的结果不同,要么是没产生效果。学到后面,才明白到其实程序的代码是没错的,错误的是代码的位置!
首先看下面这段代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script>
document.getElementById("test").innerHTML="abcdefg";
</script>
</head>
<body>
<p id="test"></p>
</body>
</html>
这段代码中的js想要强行的通过给innerHTML赋值来改变id为test的p标签的内容,但是,运行的结果是一片空白。F12控制台中提示如下错误:Uncaught TypeError: Cannot set property 'innerHTML' of null
提示信息的意思就是通过id来获取节点失败,没有获取到节点,所以document.getElementById()的结果为null,而null肯定是没有innerHTML这一个属性的,于是错误就发生了。
现在,如果js代码的位置往后调一点,调多少呢? 其实只要调整到p标签的后面任意位置,就能顺利运行,得到预期的结果。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<p id="test"></p>
</body>
<script>
document.getElementById("test").innerHTML="sdfghjk";
</script>
</html>
虽然这只是一个特别简单的例子,只是改变innerHTML的内容,但是往复杂了说,在要操作的节点之前,定义对节点操作,一般都是会失败的。
这是因为浏览器执行脚本的顺序是从上到下的(从前往后)执行,并不是等整个脚本都加载完毕之后才开始执行。
所以处在前面的代码会比处在后面的代码先执行,如果前面的代码要用到后面的代码的内容,那么这时就会出错。而后面的代码要用到前面的代码,就不会出错。
所以,建议将js代码放置与body标签之后;
这样有两个好处,首先,如果引入的js文件较大,则在下载js文件的过程当中,用户的浏览器界面是一片空白,只有当js文件下载完毕之后,才会显示内容,这样会影响用户体验。如果将js代码放置在后面,则会在一定程度上解决这个问题。
另外一个好处就是上面说的,解决代码运行错误的问题。
JavaScript代码-----位置决定结果的更多相关文章
- javascript代码放置位置对程序的影响
在编写html文档时,javascript可以放置的位置有两个地方<head>或者<body>,但是放置的地方,会对 JavaScript 代码的正常执行会有一定影响.由于 H ...
- css和javascript代码写在页面中的位置说明
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- JavaScript代码存放位置
JavaScript代码存放位置 HTML的head中 HTML的body代码块底部(推荐) 由于Html代码是从上到下执行,如果Head中的js代码耗时严重,就会导致用户长时间无法看到页面,如果放置 ...
- 分析JavaScript代码应该放在HTML代码哪个位置比较好
本文总结了多种放置JS代码的方法,需要的朋友可以参考下 在哪里放置 JavaScript 代码? 通常情况下,JavaScript 代码是和 HTML 代码一起使用的,可以将 JavaScript 代 ...
- JavaScript代码放在HTML代码不同位置的差别
通常情况下,JavaScript 代码是和 HTML 代码一起使用的,可以将 JavaScript 代码放置在 HTML 文档的任何地方.但放置的地方,会对 JavaScript 代码的正常执行会有一 ...
- javascript代码 调试方法
你的代码可能包含语法错误,逻辑错误,如果没有调试工具,这些错误比较难于发现. 通常,如果 JavaScript 出现错误,是不会有提示信息,这样你就无法找到代码错误的位置. 在程序代码中寻找错误叫做代 ...
- JavaScript代码段整理笔记系列(二)
上篇介绍了15个常用代码段,本篇将把剩余的15个补齐,希望对大家有所帮助!!! 16.检测Shift.Alt.Ctrl键: event.shiftKey; //检测Shift event.altKey ...
- FineUI(专业版)实现百变通知框(无JavaScript代码)!
博客园已经越来越不公正了,居然说我这篇文章没有实质的内容!! 我其实真的想问哪些通篇几十个字,没任何代码和技术分享,嚷嚷着送书的文章的就能雄霸博客园首页几天,我这篇文章偏偏就为管理员所容不下. 其实我 ...
- javaScript代码执行顺序
javaScript是一种描述型脚本语言,由浏览器进行动态的解析和执行. 页面加载过程中,浏览器会对页面上载入的每个js代码块进行扫描. JavaScript是一段一段的分析执行的,在分析执行同一段代 ...
随机推荐
- 使用KVM虚拟机遇到的问题(持续更新)
1.qemu-kvm.kvm.qemu 和 qemu-system-x86_64四种命令的差别 qemu 和 qemu-system-x86_64:启动qemu虚拟机的命令,x86_64为64位系统时 ...
- Spark LR逻辑回归中RDD转DF中VectorUDT设置
System.setProperty("hadoop.home.dir", "C:\\hadoop-2.7.2"); val spark = SparkSess ...
- chm文件转换成html文件,解决chm文件无法使用浏览器打开的问题
每天学习一点点 编程PDF电子书免费下载: http://www.shitanlife.com/code CHM是英语“Compiled Help Manual”的简写,即“已编译的帮助文件”.CHM ...
- 莫比乌斯函数 51nod-1240(合数分解试除法)
就是输出n时,莫比乌斯函数的值.直接将n唯一分解即可. 思路:筛出105以内的素数,因为109开方,105就差不多.当一个大数还没有被1000个素数分解,那么这个数基本上可以认为是素数(为合数为小概率 ...
- Git命令的使用_操作远程仓库——详细教程3
本博文讲述将本地仓库提交到GIT@OSC(或者是GitHub),故而需要用户首先有一个GIT@OSC(或者是GitHub)帐号. 我的GIT@OSC帐号是:https://git.oschina.ne ...
- promise-不使用catch出现warning的原因
今天在使用node运行js文件时,返回了下面的错误和警告,警告部分主要是因为使用了promise,但是没有使用catch来捕捉错误.更详细的解释在下面,这是nodejs文档的process模块的一部分 ...
- Hibernate validator使用和自定义validator及整合Spring MVC
http://blog.csdn.net/lwphk/article/details/43983669 Hibernate validator使用 导入validation-api-xxx.jar 以 ...
- ubuntu 设置github秘钥
github的SSH配置如下: 一 . 设置Git的user name和email: $ git config --global user.name "AmyOrz" $ git ...
- python基础学习第一天
def用法 函数定义的基本格式如下: def function(params): somthing return values 说明:return语句可选,出现return语句表示函数 ...
- ESP32 DAC
ESP32有两个DAC通道,通道1链接GPIO25, 通道2链接GPIO26; 当DAC设置为 “built-in DAC mode”的时候,I2S可以通过DAC发送数据: 使用示例: dac_out ...