今天在使用JavaScript使用document.ElementById("ID")的时候,发现var x = document.getElementById("childDiv")在方法外定义的全局变量不能使用,在方法内部定义却可以使用。具体代码如下:
    <script type="text/javascript" charset="utf-8" async defer>
            var x = document.getElementById("childDiv")  /*无效的*/
            function addButton(){
                var e = document.createElement("input");
                e.type="button";
                e.value="被添加的按钮";
                x.appendChild(e)
            };
            function addSelect(){
                var e2 = document.createElement("select");
                e2.options[0] = new Option("上海","");
                e2.options[1] = new Option("北京","")
                e2.size = "2";
                x.appendChild(e2);
            };
            function addImg(){
                var e3 = document.getElementById("img1")
                x.appendChild(e3);
            }
        </script>
    <div>
        <img id="img1" src="img/view1.jpg" alt="星星" width="300" height="300">
        <input type="button" value="添加按钮" onclick="addButton()">
        <input type="button" value="添加选择框" onclick="addSelect()">
        <input type="button" value="添加图像" onclick="addImg()">
        <div id="childDiv"></div>
    </div>

  这个问题我纠结了好一会,在网上查取一些资料,翻来覆去好一会才想到原因,稍微改一下顺序。
    <div>
        <img id="img1" src="img/view1.jpg" alt="星星" width="300" height="300">
        <input type="button" value="添加按钮" onclick="addButton()">
        <input type="button" value="添加选择框" onclick="addSelect()">
        <input type="button" value="添加图像" onclick="addImg()">
        <div id="childDiv"></div>
    </div>

  <script type="text/javascript" charset="utf-8" async defer>
            var x = document.getElementById("childDiv")  /*有效的*/    ......
        </script>

  原来在在函数外写的 javascript 会在页面初始化之前就已经加载, 页面未初始化时自然就获取不到尚未加载的ID(childDiv),而当把这段JavaScript代码放在页面之后,就可以正常使用。所有在学习的时候一定要注意加载顺序的问题,不要犯小韩这样的小白错误呀。

在JAVASCRIPT中,为什么document.getElementById不可以再全局(函数外)使用?的更多相关文章

  1. JavaScript中querySelector()和getElementById()(getXXXByXX)的区别

    在日常开发中,使用JavaScript获取元素的时候,最常用的方法就是document.getElementById(getXXXByXX)方法.但是最近发现有很多地方使用的是querySelecto ...

  2. 使用 JavaScript 中的 document 对象的属性,根据下拉框中选择的属性,更改页面中的字体颜色和背景颜色

    查看本章节 查看作业目录 需求说明: 使用 JavaScript 中的 document 对象的属性,根据下拉框中选择的属性,更改页面中的字体颜色和背景颜色 实现思路: 在页面的 <body&g ...

  3. javascript中window,document,body的解释

    解释javascript中window,document,body的区别: window对象表示浏览器中打开的窗口,即是一个浏览器窗口只有一个window对象. document对象是载入浏览器的ht ...

  4. JavaScript中的document.fullscreenEnabled

    本文主要讲述了: 什么是document.fullscreenEnabled 作用 兼容性 正文 什么是document.fullscreenEnabled document.fullscreenEn ...

  5. 使用 JavaScript 中的 document 对象查找 HTML 元素,实现“登录”按钮的高亮特效 鼠标悬浮于“登录”按钮时,按钮高亮显示;

    查看本章节 查看作业目录 需求说明: 使用 JavaScript 中的 document 对象查找 HTML 元素,实现"登录"按钮的高亮特效 鼠标悬浮于"登录" ...

  6. Javascript中,document.getElementsByName获取的就一定是数组了么?

    今天在一张JSP网页中,写一个javascript方法,用于全选. 全部被选checkBox位于一个名为mainForm的Form下,name=pushIds.方法如下: function selec ...

  7. JavaScript中的document.cookie的使用

    转:http://blog.csdn.net/liuyong0818/article/details/4807473 我们已经知道,在 document 对象中有一个 cookie 属性.但是 Coo ...

  8. javascript里面的document.getElementById

    一.getElementById:获取对 ID 标签属性为指定值的第一个对象的引用,它有 value 和 length 等属性 1.获取当前页面的值input标签值:var attr1=documen ...

  9. JavaScript 中Array数组的几个内置函数

    本文章内容均参考<JavaScript高级程序设计第三版> 今天在看JavaScript书籍的时候,看到之前没有了解过的JavaScript中Array的几个内置函数对象,为了之后再开发工 ...

随机推荐

  1. luogu P1446 [HNOI2008]Cards burnside引理 置换 不动点

    LINK:Cards 不太会burnside引理 而这道题则是一个应用. 首先 一个非常舒服的地方是这道题给出了m个本质不同的置换 然后带上单位置换就是m+1个置换. burnside引理: 其中D( ...

  2. P3239 [HNOI2015]亚瑟王 期望 dp

    LINK:亚瑟王 Saber!Excalibur! 比较难的期望dp. 可以发现如果暴力枚举所有的局面复杂度很高 . 转换的思路则是 期望的线性性. 求出每张牌的期望累加即可. 考虑每张牌的期望=这张 ...

  3. vue cli4构建基于typescript的vue组件并发布到npm

    基于vue cli创建一个vue项目 首先安装最新的vue cli脚手架, npm install --global @vue/cli npm WARN optional SKIPPING OPTIO ...

  4. python7.4邮件发送

  5. 【目标检测】:SPP-Net深入理解(从R-CNN到SPP-Net)

    一. 导论 SPP-Net是何凯明在基于R-CNN的基础上提出来的目标检测模型,使用SPP-Net可以大幅度提升目标检测的速度,检测同样一张图片当中的所有目标,SPP-Net所花费的时间仅仅是RCNN ...

  6. docker 启动redis 报错!

    首先通过命令进入: docker  exec -it ‘容器名’  redis-cli 错误信息: There was an unexpected error (type=Internal Serve ...

  7. 一个试图了解JVM内存模型的两年经验的初级程序员,透彻!

    所有的编程语言中都有内存模型这个概念,区别于微架构的内存模型,高级语言的内存模型包括了编译器和微架构两部分.我试图了解了Java.C#和Go语言的内存模型,发现内容基本大同小异,只是这些语言在具体实现 ...

  8. 总结笔记 | 深度学习之Pytorch入门教程

    笔记作者:王博Kings 目录 一.整体学习的建议 1.1 如何成为Pytorch大神? 1.2 如何读Github代码? 1.3 代码能力太弱怎么办? 二.Pytorch与TensorFlow概述 ...

  9. AAPT: error: resource android:attr/dialogCornerRadius not found. Android resource linking failed

    打开android\app\build.gradle 修改 compileSdkVersion 和 targetSdkVersion

  10. Linux Docker部署

    Docker 安装 卸载旧版docker yum remove docker \ docker-client \ docker-client-latest \ docker-common \ dock ...