Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在创建Id之前使用getElementById

在创建Id之前使用getElementById
EN

Stack Overflow用户
提问于 2014-05-30 08:54:52
回答 2查看 849关注 0票数 0

以下代码起作用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
 <html>

<head>
<meta charset="utf-8" />
<title>Orientation Test</title>

<style>
</style>

<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<meta name="viewport" content="initial-scale=1, user-scalable=no">

<style type='text/css'>

    body {font-family:Helvetica,FreeSans,Arial,sans; font-size:18px;}
    h1 {margin:0; font-size:22px;}
    label {font-weight:bold; display:inline-block; width:50%;}
    #wrapper {width:100%; height:100%;}

 </style>

 <script type="text/javascript" src="main.js"></script>
 </head>

 <body>

 <div id="wrapper">
    <h1>Device motion test</h1>
    <p><label for="aX">aX</label><span id="aX"></span></p>
    <p><label for="aY">aY</label><span id="aY"></span></p>
    <p><label for="aZ">aZ</label><span id="aZ"></span></p>

    <p id = "change">0</p>
 </div>
 </body>

 </html>

Javascript文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 var s$ = function(e) {
 return document.getElementById(e);
 };


 if (window.DeviceMotionEvent) {
 alert('devicemotion supported');
 window.addEventListener('devicemotion', function(ev) {
    var acc = ev.accelerationIncludingGravity;
    dmHdlr(acc.x, acc.y, acc.z);
 }, false);
 }
 else {
 alert("devicemotion not supported on your device or browser.");
 }


var lastDM = new Date().getTime();

function dmHdlr(aX, aY, aZ) {
var currDM = new Date().getTime();
//if (currDM < lastDM + 1000) {return;}
lastDM = currDM;

s$('aX').innerHTML = aX ? aX.toFixed(3) : '?';
s$('aY').innerHTML = aY ? aY.toFixed(3) : '?';
s$('aZ').innerHTML = aZ ? aZ.toFixed(3) : '?';


}

我不明白这段代码是怎么工作的。在创建我想要的元素之前,我正在使用document.getElementById函数。在声明特定元素的id之前,我已经将标记放在HTML文件的标题中,这段代码如何工作?脚本在元素创建之前运行,但它有效吗?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-30 09:03:06

看来,您的任何函数直到

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 if (window.DeviceMotionEvent) {...    

被触发了。此时,主体已经呈现,id存在于DOM中,因此没有问题。您可以首先声明您的函数,只要在调用该函数时id存在。在这种情况下,确实如此。

票数 0
EN

Stack Overflow用户

发布于 2014-05-30 09:32:48

我可以说,对于Chrome、Firefox和IE9浏览器,所有这些都遵循解析html和执行javascript的顺序。

浏览器首先加载html并从页面首页解析其所有标记。在html中,它将解析标题标记,然后解析元标记,然后是样式标记等等。它还解析,您在其中提到的javascript文件,而不是执行。

然后构建DOM层次结构,并将CSS属性设置为DOM元素。

最后,当DOM到位时,它将执行javascript。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 if (window.DeviceMotionEvent) {
  ...
 window.addEventListener('devicemotion', function(ev) {
  ...
 }

这就是为什么浏览器在if中执行main.js条件并通过id获取元素的原因,因为浏览器已经解析了这些元素。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23959716

复制
相关文章
getElementById 使用
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/159562.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/14
1900
document.getElementById使用[通俗易懂]
getElementById() 方法可返回对拥有指定 ID 的第一个对象的引用。
全栈程序员站长
2022/09/14
4.5K0
getElementById的用法
getElementById是通过Id来设置/返回HTML标签的属性及调用其事件与方法。用这个方法基本上可以控制页面所有标签,条件很简单,就是给每个标签分配一个ID号。
全栈程序员站长
2022/09/14
4470
在 NHibernate 中使用 Snow Flake ID
Snow Flake 是 Twitter 开源的分布式 ID 生成算法,结果是一个 long 型的 ID。其核心思想是:
beginor
2020/08/07
7330
在 NHibernate 中使用 Snow Flake ID
getElementById怎么调用
然后你就可以借这个方法来引用网页文件中各个标签的属性了,当然这个被你引用的标签必须具有ID属性;
全栈程序员站长
2022/09/14
1.2K0
getElementById获取元素
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/159592.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/14
1.6K0
getElementById获取元素
document.getElementById详解
document.getElementById(” “) 得到的是一个对象,用 alert 显示得到的是
全栈程序员站长
2022/09/14
2.9K0
在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke。
本文转载:http://blog.csdn.net/playing9c/article/details/7471918
跟着阿笨一起玩NET
2018/09/19
5.1K0
Confluence 6 在升级之前
在这个指南中,我们将会与你一同对最新的 Confluence 站点在 Windows 或者 Linux 平台进行安装和更新。
HoneyMoose
2019/04/20
6260
Confluence 6 在升级之前
getElementById 方法及用法
顾明思义,get-Element-By-Id,就是通过ID来设置/返回HTML标签的属性及调用其事件与方法。用这个方法基本上可以控制页面所有标签,条件很简单就是给每个标签分配一个ID号:
全栈程序员站长
2022/09/14
1.2K0
JavaScript getElementById()方法介绍
getElementById()可以根据元素的 id 属性获取一个元素节点对象,该方法所有浏览器均可使用
全栈程序员站长
2022/09/14
3720
JavaScript getElementById()方法介绍
Confluence 6 在升级之前 原
在这个指南中,我们将会与你一同对最新的 Confluence 站点在 Windows 或者 Linux 平台进行安装和更新。
HoneyMoose
2019/04/29
5190
Confluence 6 在升级之前
                                                                            原
getelementbyid属性与用法[通俗易懂]
语法:oElement = document .getElementById ( sID )
全栈程序员站长
2022/09/14
3.4K0
mold源码阅读七 创建输出段之前
上期的内容主要是section size相关的优化,这期内容是创建输出段前的最后一些处理
AkemiHomura
2023/05/21
3240
在使用Java 8并行流之前要考虑两次
如果您倾听来自Oracle的人们谈论Java 8背后的设计选择,您会经常听到并行性是主要动机。 并行化是lambdas,流API和其他方面的驱动力。 我们来看一下流API的示例。
白石
2019/08/23
9340
使用Git在GitHub创建远程仓库
在开发一个项目的时候,往往会用到Git,Git是分布式版本控制系统,说到分布式,就不得不提集中式,首先说说集中式和分布式的概念。
AsiaYe
2019/11/06
1.4K0
使用Git在GitHub创建远程仓库
uni-id入门(三)---初始化uni-id(创建uni-id实例)
我们的视频教程(免费)链接为https://static-b5208986-2c02-437e-9a27-cfeba1779ced.bspapp.com/ 由于考研所以可能文章比较短也是为了拆分每一步操作
代码哈士奇
2021/10/25
2K0
uni-id入门(三)---初始化uni-id(创建uni-id实例)
Consul初探-在深交之前先认识
首先,官方介绍是:Consul 是一种服务网格的解决方案,在 Consul 中,提供了服务发现、配置、分段等控制管理平台,Consul 中的每项功能都可以单独使用,也可以一起使用来构建完整的服务网格;在 Consul 内部,有一个简单的代理服务,所以在安装 Consul 后,马上就可以开始使用 Consul ;当然,Consul 也支持集成第三方代理,比如 Envoy。
梁规晓
2019/07/09
5170
Consul初探-在深交之前先认识
java——推断日期是否在今天之前
这里说的日期是指字符串的日期格式,如“2014-10-15”,我们要推断这个日期是否在今天之前,网上看到好多推断的方法,都是拿这个日期转换成Date对象 然后与new Date()比較,使用comparetTo() 或者before()方法,事实上这样做都会有点小问题,这样做忽略了一个小时分钟的比較,会出现错误,得不到正确的结果。
全栈程序员站长
2022/07/08
2.1K0
sqlmap 源码分析(三)在注入之前
sqlmap是web狗永远也绕不过去的神器,为了能自由的使用sqlmap,阅读源码还是有必要的…
LoRexxar
2023/02/21
1.6K0

相似问题

在创建sql之前使用ID?

22

getElementById与使用id名称

10

无法使用getelementbyid访问id

35

getElementById("id").value

33

GetElementByID -多个ID

153
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文