首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从外部JS文件调用时,document.getElementById()返回NULL

从外部JS文件调用时,document.getElementById()返回NULL的原因可能有以下几种:

  1. 元素尚未加载:如果在调用document.getElementById()之前,HTML文档尚未完全加载,那么该方法可能无法找到相应的元素。这通常发生在将JavaScript代码放在HTML文档的头部而不是尾部时。解决方法是将JavaScript代码放在HTML文档的尾部,或者使用window.onload事件来确保文档完全加载后再执行代码。
  2. 元素ID错误:如果调用document.getElementById()时传递的元素ID与实际HTML文档中的元素ID不匹配,那么该方法将返回NULL。请确保传递正确的元素ID。
  3. 跨域访问限制:如果JavaScript文件和HTML文档不在同一个域中,浏览器可能会出于安全考虑限制对DOM的访问。这种情况下,document.getElementById()也可能返回NULL。解决方法是确保JavaScript文件和HTML文档在同一个域中,或者使用跨域资源共享(CORS)来解决跨域访问限制。
  4. 元素尚未创建:如果调用document.getElementById()时,相应的元素尚未在DOM中创建,那么该方法将返回NULL。这可能是由于JavaScript代码在元素创建之前执行导致的。解决方法是确保JavaScript代码在元素创建之后再执行,或者使用延迟加载技术来确保元素已经存在于DOM中。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • javascript基础重点

    使用iterable内置的forEach方法,它接收一个函数,每次迭代就自动回该函数。...,反之不行 如果内部函数和外部函数的变量重名的话,javascript的函数在查找变量时自身函数定义开始,内向外查找,如果内部函数定义了与外部函数重名的变量,则内部函数的变量将屏蔽外部函数的变量 10...逐渐变为0,如果元素不是block性质的DOM元素,设置它们的height就不会起作用 25.涉及到异步代码,无法在掉用时捕获异常,原因是在绑定事件的代码处,无法捕获事件处理函数的错误 26.underscore...函数库  node.js 27....如果我们响应exit事件,就可以在程序即将退出时执行某个回函数: // 程序即将退出时的回函数: process.on('exit', function (code) { console.log

    91220

    JavaScript基础

    /编写js代码 将代码编写到外部js文件中,然后通过标签将其引入 script标签一旦用于引入外部文件了,就不能在编写代码了,即使编写了浏览器也会忽略 ,如果需要则可以在创建一个新的...,this是window 以方法的形式调用时,this就是调用方法的对象 以构造函数的形式调用时,this就是新创建的对象 arguments arguments和this类似,都是函数中的隐含的参数...数组遍历 forEach()方法需要一个回函数作为参数, 数组中有几个元素,回函数就会被调用几次, 每次调用时,都会将遍历到的信息以实参的形式传递进来, 我们可以定义形参来获取这些信息。...getMonth() 返回当前日期对象的月份(0-11) 0 一月 1 二月 。。。 getFullYear() Date 对象以四位数字返回年份。...getTime() 返回当前日期对象的时间戳 时间戳,指的是1970年月1日 0时0分0秒,到现在时间的毫秒数 计算机底层保存时间都是以时间戳的形式保存的。

    2K20

    AJAX

    ,type表示要从服务器端收到的数据类型,有text|html|json|script,规定了返回数据的类型后,如果服务器发送的不是这种类型,那么不会执行回函数 将上一节中的func函数改为如下 function...('content'); ele.innerText=back_data; } ) } 这里回函数中有三个形参,第一个为服务器返回的数据,第二个为状态信息,success或者是...2.$.getScript 通过 AJAX 请求来获得并运行一个 JavaScript 文件,即可以根据需要来决定是否引入 $.getScript("test.js", function(){ alert...("Script loaded and executed."); }); jquery1.2版本后可以跨域调用js文件 3.$.getJSON 相当于$.get()最后一个参数为json 4.$.ajax...这里有json字符串和json对象两个概念 json字符串就是数据交换传输的信息格式,json对象其实是javascript对象的子集 数据传输或转换时,先将原数据转换成json字符串,使用时再将json

    4.2K20

    29.精读《JS 中的内存管理》

    定期的, 垃圾回收器将从根开始, 找所有根开始引用的对象, 然后找这些对象引用的对象, 根开始,垃圾回收器将找到所有可以获得的对象和所有不能获得的对象....如果使用这些全局变量用来暂存大量的数据, 记得在使用后, 对其重新赋值为 null. 2. 未销毁的定时器和回函数 在很多库中, 如果使用了观察着模式, 都会提供回方法, 来调用一些回函数....要记得回收这些回函数....闭包 在 JS 开发中, 我们会经常用到闭包, 一个内部函数, 有权访问包含其的外部函数中的变量....当其他引用被消除后, 引用就会内存中被释放. JS 这类高级语言,隐藏了内存管理功能。但无论开发人员是否注意,内存管理都在那,所有编程语言最终要与操作系统打交道,在内存大小固定的硬件上工作。

    55420

    高级前端一面常考手写面试题指南

    ,就将这个文件拿出来执行,如果这个文件里面存在module.exports,当运行到这行代码时将 module.exports 的值加入这个对象,键为对应的文件名,最终这个对象就长这样:{ "a.js...": "hello world", "b.js": function add(){}, "c.js": 2, "d.js": { num: 2 }}当你再次 require 某个文件时,如果这个对象里面有对应的值...文件,他可以保证javascript执行的独立性,不会被外部所影响// vm 内置模块// 虽然我们在外部定义了hello,但是str是一个独立的模块,并不在村hello变量,所以会直接报错。...__proto__ == null,Object的基类(null)上面都没找到,则返回 false// 实例....数组中提前注册的回实现AJAX请求AJAX是 Asynchronous JavaScript and XML 的缩写,指的是通过 JavaScript 的 异步通信,服务器获取 XML 文档从中提取数据

    41120

    【JavaScript】 进阶教程 施工中~

    而不是在函数调用时 全局执行上下文环境时在全局作用域确定之后,js代码马上执行之前创建 函数执行上下文环境时在调用函数时,函数体代码执行之前创建 2、 作用域时静态的,只要函数定义好了就一直存在,且不会再变化...; // 闭包死亡(包含闭包的函数对象成为垃圾对象) 闭包的应用:定义JS模块 JS模块: ​ 具有特定功能的js文件 ​ 将所有的数据和功能都封装在一个函数内部(私有的) ​ 只向外暴露一个包含n个方法的对象或函数...4、js引擎执行代码的基本流程 先执行初始化代码:包含一些特别的代码 回函数(异步执行) ​ 设置定时器 ​ 绑定事件监听 ​ 发送ajax请求 后面在某个时刻才会执行回代码 setTimeout...(异步代码):处理回逻辑 2、js引擎执行代码的基本流程: 初始化代码===>回代码 3、模型的两个重要组成部分: 事件(定时器/DOM事件/Ajax)管理模块 回队列 4、模型的运转流程 执行初始化代码...构造函数,加载分线程执行的js文件 ​ Worker.prototype.onmessage:用于接收另一个线程的回函数 ​ Worker.prototype.postMessage:向另一个线程发送消息

    1.4K30

    如何设计一个缓存函数

    // 将执行的回函数赋值给结果 result = callback(); // 把缓存开关打开 cache = true; // 清除传入的回函数.../utils/timerChunk.js')); ... new renderApp(document.getElementById('app')).init(); console.timeEnd('start...callback = null; return result; } } } 没错,本质上就是利用闭包缓存了回函数的结果,当第二次再次执行时,我们用了一个cache开关的标识直接返回上次缓存的结果...并且我们手动执行回函数后,我们手动释放了callback。 并且我们使用了一个lazyFunction的方法,实际上是进一步包了一层,我们将同步引入的代码,通过可执行回函数去处理。...,我们会缓存其回函数并会设置一个开关记录已经缓存,当再次使用时,我们会直接从缓存中获取函数。

    42920

    javascript 基础_JavaScript高级编程

    * undefined表示定义未赋值 * null表示赋值了,值为null 什么时候给变量赋值为null?...; //闭包死亡(包含闭包的函数对象成为垃圾对象) 2.4.5闭包的应用_自定义JS模块 闭包的应用:自定义JS模块 – 具有特定功能的js文件 – 将所有的数据和功能都封装在一个函数内部...– setTimeout()的回函数是在主线程执行的 – 定时器回函数只有在运行栈中的代码全部执行完后才有可能执行 2.为什么js要用单线程模式,而不是用多线程模式?...事件循环模型 1.所有代码分类 – 初始化执行代码(同步代码):包含绑定dom事件监听,设置定时器,发送ajax请求的代码 – 回执行代码(异步代码):处理回逻辑 2.js引擎执行代码的基本流程...分线程的实现,取名为:Web Workers 2.相关API – Worker:构造函数,加载分线程执行的js文件 – Worker.prototype.onmessage: 用于接收另一个线程的回函数

    1.6K30

    js面试跳跳题

    ; // 将 debounce 处理结果当作函数返回 // 触发事件回时执行这个返回函数 return function (...args) { // 如果已经设定过定时器就清空上一次的定时器...思路:用时间戳来判断是否已到执行时间,记录上次执行的时间戳,然后每次触发事件执行回,回中判断当前时间戳距离上次执行时间戳的间隔是否已经达到时间差(Xms) ,如果是则执行,并更新上次执行的时间戳...简而言之,无论使用何种方式对函数类型的值进行传递,当函数在别处被调用时都有闭包的身影。...作用: 可以在函数外部读取闭包函数内部作用域的变量 可以让这些变量始终保持在内存中,ajax中请求成功的回函数就利用了闭包的这个特效 封装私有变量 示例地址 缺点以及解决方法: 由于闭包会使函数中的变量都被保存在内存中...(答案未知) 创建一个空对象 将构造函数的this赋给新对象(因此this就指向了这个新对象) 执行构造函数中的代码(为这个新对象添加属性) 如果这个函数有返回值,则返回;否则,就会默认返回新对象 参考链接

    13810

    前端开发面试如何答题才能让面试官满意

    第7行,我们返回变量 add 的内容。js引擎查找一个名为 add 的变量并找到它. 第4行和第5行括号之间的内容构成该函数定义。...不管是函数返回一个函数,还是产生了外部作用域的引用,都是有道理的。所以,什么是闭包?解释一下作用域链是如何产生的。解释一下js执行上下文的创建、执行过程。解释一下闭包所产生的变量放在哪了。...几种方式是:将 js 脚本放在文档的底部,来使 js 脚本尽可能的在最后来加载执行给 js 脚本添加 defer 属性,这个属性会让脚本的加载与文档的解析同步解析,然后在文档解析完成后再执行这个脚本文件...如果不设置回函数,Promise内部抛出的错误,不会反应到外部。当处于pending状态时,无法得知目前进展到哪一个阶段(刚刚开始还是即将完成)。...// 监听 `install` 事件,回中缓存所需文件self.addEventListener("install", e => { e.waitUntil( caches.open("my-cache

    1.3K20

    JavaScript -1- 基础教程与部分功能示例

    外部脚本 脚本可放置于外部文件中: 外部文件:myScript.js function myFunction() { document.getElementById("demo").innerHTML...; } 外部脚本很实用,如果相同的脚本被用于许多不同的网页。 JavaScript 文件文件扩展名是 *.js*。...外部脚本的优势 在外部文件中放置脚本有如下优势: 分离了 HTML 和代码 使 HTML 和 JavaScript 更易于阅读和维护 已缓存的 JavaScript 文件可加速页面加载 如需向一张页面添加多个脚本文件...函数调用 函数中的代码将在其他代码调用该函数时执行: 当事件发生时(当用户点击按钮时) 当 JavaScript 代码调用时 自动的(自调用) 函数返回 当 JavaScript 到达 return...return a * b; // 函数返回 a 和 b 的乘积 } x 的结果将是: 56 功能示例 读取 json 文件 加载 jquery.js 后 $.getJSON

    71520

    JavaScript高级知识总结(高级篇)

    ; //闭包死亡(包含闭包的函数对象成为垃圾对象) 2.4.5闭包的应用_自定义JS模块 闭包的应用:自定义JS模块 – 具有特定功能的js文件 – 将所有的数据和功能都封装在一个函数内部...– setTimeout()的回函数是在主线程执行的 – 定时器回函数只有在运行栈中的代码全部执行完后才有可能执行 2.为什么js要用单线程模式,而不是用多线程模式?...4.js引擎执行代码的基本流程 – 先执行初始化代码:包含一些特别的代码 回函数(异步执行) – 设置定时器 – 绑定事件监听 – 发送ajax请求 – 后面在某个时刻才会执行回代码 4.4...事件循环模型 1.所有代码分类 – 初始化执行代码(同步代码):包含绑定dom事件监听,设置定时器,发送ajax请求的代码 – 回执行代码(异步代码):处理回逻辑 2.js引擎执行代码的基本流程...分线程的实现,取名为:Web Workers 2.相关API – Worker:构造函数,加载分线程执行的js文件 – Worker.prototype.onmessage: 用于接收另一个线程的回函数

    1.6K20
    领券