【JavaScript】出现即使设置了ID也获取不到的可能原因与window.onload
有时候。在JavaScript中。即使设置了ID也有可能出现document.getElementById()获取不到的情况,然后你就開始想document是否写错之类的。事实上根本就不是你的代码的大写和小写出现了问题。主要是你还没有搞清楚直接写在<script></script>之间东西与写在window.onload=function(){}里面的东西的差别究竟在哪里。
比方例如以下的很一段简单代码,在网页中除了一个ID为a,然后里面写了aaaa的图层div之外就再也没有其他东西了,在头部有一段写得“很规范”的脚本,本来就<script></script>就能够了,与<script type="text/javascript" language="javascript"></script>根本就没有差别的。免得有些人自以为很规范的纪律流。说是由于这个原因而导致以下的一系列的问题。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>onloadtest</title>
<script type="text/javascript" language="javascript">
alert(document.getElementById("a"));
window.onload=function(){
alert(document.getElementById("a").innerHTML);
}
</script>
</head>
<body>
<div id="a">aaaa</div>
</body>
</html>
<script>
alert(document.getElementById("a").innerHTML);
</script>
这段脚本首先要获取一个图层,然后再通过window.onload之后获得一个a图层的内容。预计非常多人以为第一行代码
alert(document.getElementById("a"));
会弹出类似于[Object:HTML ObjectElement]之类的东西吧?我在之前也这样觉得的,但实际执行结果。却是例如以下效果:
咦?怎么第一个alert会弹出空啊?这是由于HTML在载入的时候,是一行一行地编译。动态编译的,它不是像C语言那样,一次性地编译整个程序。再给你执行的。也就是所谓的动态编译域与静态编译域的差别。因此,能够解释为什么Javascript读到错误会自己主动停止执行。也会出现此前我已经提到过的《【JavaScript】变量冲突是能够通过编译的》(点击打开链接)的问题。
回到正题上面来。開始,网页读到第一个alert脚本的时候。网页中根本就没有出现id为a的图层div!
所以不能获取是非常正常的。
解决方案有两个,一个是使用window.onload=function(){},要求这段脚本必须在全部的网页东西读完才干执行。二是。直接把这段脚本放在最以下</html>之后,这样就能够直接放在<script></script>之中了,脚本脚本,处于脚部的网页执行剧本,望文生义都知道要放在网页的脚部了。这也是我非常不爽一些人老是爱在<head></head>写脚本的原因。
当然,通过这个样例,你也要清楚,假设在头部引入javascript。类似<script src="js/jquery-1.11.1.js"></script>之类的,注意。假设引入的Javascript中出现要网页一開始就载入的javascript的话,必须把写着脚本写入window.onload=function(){}
【JavaScript】出现即使设置了ID也获取不到的可能原因与window.onload的更多相关文章
- 每天一个JavaScript实例-展示设置和获取CSS样式设置
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- javascript querySelector和getElementById通过id获取元素的区别
querySelector和getElementById通过id获取元素的区别 <!DOCTYPE html> <html> <head> <meta cha ...
- JavaScript 实现彩票中随机数组的获取
1.效果图: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...
- UNIX文件的权限之“设置用户ID位”
用stat函数可以获取一个文件的状态信息,原型是这样的: int stat(const char *path, struct stat *buf); 其中结构体stat的结构: struct stat ...
- linux系统学习笔记:无死角理解保存的设置用户ID,设置用户ID位,有效用户ID,实际用户ID
一.基本概念 实际用户ID(RUID):用于标识一个系统中用户是谁,一般是在登录之后,就被唯一的确定,就是登录的用户的uid. 有效用户ID(EUID):用于系统决定用户对系统资源的权限,也就是说当用 ...
- 实际用户ID,有效用户ID,保存的设置用户ID
Unix中常见的几个概念,下面做一个解释. 首先需要明确一点,这几个概念都是和进程相关的. real user ID表示的是实际上进程的执行者是谁,effective user ID主要用于校验该进程 ...
- APUE学习笔记——8.11 实际用户ID、有效用户ID、设置用户ID
用户ID的基本概念 在Unix系统中,很多操作涉及到权限问题,这些权限涉及到用户ID和组ID的概念. 组ID和用户ID的原理和相关内容是类似的.下面介绍用户ID. 我们常见见到三种关于 ...
- js/jq和a标签(刷新/ajax/对话框/循环/select选中/checkbox选中/id的获取//数据处理成钱的格式)//js/jq分页
1.刷新 <a href="javascript:history.go(-1)">返回上一页</a><a href="javascript: ...
- arcgis for javascript 添加featurelayer,设置地图最大最小等级
转自原文arcgis for javascript 添加featurelayer,设置地图最大最小等级 var map; var livingCenter; var livingCenterUrl = ...
随机推荐
- [杂题]CSUOJ1276 Counting Route Sequence
题目链接 题意:从1号点走到n号点(每条边只能走一次, 两结点间的边数必定为奇数) 问 经过结点不同顺序的方式有多少种(如1->2->3->4和1->3->2->4 ...
- 文件过滤驱动实现目录重定向(一)good
文件过滤驱动拦截的IRP主要包括以下几个:IRP_MJ_CREATE,文件创建操作,文件的任何操作,都是从这里开始的.IRP_MJ_CLEANUP,文件的HANDLE句柄全部关闭会触发这个消息IRP_ ...
- Yii 实现restful
首先做一下接口的 URL 规划,假设我们要面对的资源是 item ,现在我们暴露5个接口供其他应用调用,分别是: 对于所有 item 列表调用: GET /rest/item 对于某个 item 信息 ...
- Android 常用UI控件之TabHost(4)实现当Tab栏有多个tab时,可以左右滑动
<!-- <HorizontalScrollView android:id="@+id/horizontalScrollView1" android:layout_wi ...
- WCF - Windows Service Hosting
WCF - Windows Service Hosting The operation of Windows service hosting is a simple one. Given below ...
- Understanding Network Class Loaders
By Qusay H. Mahmoud, October 2004 When Java was first released to the public in 1995 it came wit ...
- com.google.common.eventbus.EventBus介绍
以下内容直接翻译了EventBus的注释: com.google.common.eventbus.EventBus介绍: 首先这个类是线程安全的, 分发事件到监听器,并提供相应的方式让监听器注册它们自 ...
- NOI2010海拔
2007: [Noi2010]海拔 Time Limit: 20 Sec Memory Limit: 552 MBSubmit: 1302 Solved: 612[Submit][Status] ...
- 使用Xcode查找项目中的中文字符串
打开”Find Navigator” 切换搜索模式到 “Find > Regular Expression” 输入@"[^"]*[\u4E00-\u9FA5]+[^" ...
- JS中String,Math常用函数
String对象: 1.length属性 说明:获取字符串的长度 实例: var str="abc"; var i=str.length;//output:3 2.charAt() ...