美文网首页
JS/JQuery获取不到页面元素的几种可能性

JS/JQuery获取不到页面元素的几种可能性

作者: 安在成丶 | 来源:发表于2019-06-17 17:39 被阅读0次

在写JS或者是JQuery的时候,使用$("#btn1")或者Domcument.getElementById获取相关标签元素的时候,偶尔会出现,获取不到相应元素的情况。报出以下错误等等:

Cannot read property 'XXX' of null 错误

Cannot read property 'visibility' of undefined

其实导致这样的问题的原因只有一种,那就是没有获取到相应的标签元素值,也就是 $("#btn1")取到的值是null,所以再去获取这个元素下面的属性的时候,自然就会报错了,而导致出现这样的情况的原因,可能有以下几种。

1.Html页面尚未加载完,在元素加载完成之前就调用元素

根据html页面的特性,是从上到下依次加载的,也就是遇到什么加载什么,所以,有可能JS方法会先于页面DOM元素加载。

如果在这个时候提前调用了JS方法,由于标签元素尚未加载完成,是找不到相应元素的,所以就会报出这种找不到元素的错误。

解决这类型的错误的方法也很简单,只需要:

把相应的JS代码放在html页面的最后面,保持在标签元素加载完后再调用相应的JS方法即可。

或者是使用:

JS的window.onload()方法

onload 事件会在指示页面包含图片等文件在内的所有元素都加载完成立即发生。

JQuery的ready()方法

ready事件会在文档结构已经加载完成(不包含图片等非文字媒体文件)后立即发生。

思想就是让JS方法在页面加载完全之后再运行,这样就可以保证相应元素一定加载完成了。

2.多层iframe嵌套,获取不到不同层级iframe的元素

当整个HTML页面使用了多层iframe嵌套的情况时,就会容易出现这种找不到相应内层iframe中的元素情况。

当我们去获取元素的时候,会默认去外层的iframe中寻找元素,如果是多层嵌套的iframe页面,那我们要去内层iframe中寻找元素的时候,就要通过iframe ID 切换到指定的iframe层中,再获取元素。

var obj=document.getElementById("Iframe").contentWindow;

obj.document.getElementById("menu").style.visibility="hidden";//隐藏元素

还有一种情况就是调用的JS方法处于内层iframe中,而外层窗口又没有相应ID时。

可以使用window.parent的方法,获取当前窗口的父窗口,再使用父窗口的方法获取相应元素。

window.parent.document.getElementById("null_box").getElementsByTagName("input")[0].style.visibility="visible";//恢复元素

当获取不到相应的标签元素的时候,要记住前端的一种思想

当这个元素标签获取不到的时候,可以尝试的去找这个元素标签的父标签。

按照这种寻找父亲的思想一层层往上找,当能获取到最外层父类时,再按照这种层级关系一层层往下找,就可以找到这个元素了。

相关文章

  • JS/JQuery获取不到页面元素的几种可能性

    在写JS或者是JQuery的时候,使用$("#btn1")或者Domcument.getElementById获取...

  • 02-JQuery操作DOM

    一、JS获取DOM元素和JQuery获取DOM元素的区别 JavaScript获取的是DOM对象,而Jquery获...

  • js实现lazyload

    JS & jQuery 获取元素位置尺寸

  • js 父子元素的调用

    一. jquery 的父子页面间元素的获取和方法调用: 父页面获取子页面元素: 父页面调用子页面方法: 子页面获取...

  • 【jQuery】jQuery基础

    jQuery介绍 jQuery是一个轻量级JS库,使用十分简单;jQuery的核心是选择器,用于获取页面元素;jQ...

  • DOM映射+ajax

    原生JS和jQuery在DOM映射中的区别 在原生JS中,有DOM映射,改变页面内容,JS 中获取的元素集合同时改...

  • DOM操作之元素集合使用Array数组的sort()等自带函数

    通过使用纯JS或者jQuery获取到的元素集合:JS获取DOM元素的方法(8种):1、通过ID获取(getElem...

  • jQuery 常用的节点操作

    js 获取元素(父节点,子节点,兄弟节点) jQuery 获取元素(父节点,子节点,兄弟节点) 元素筛选

  • js代码段

    js代码记录 jquery子页面(iframe)操作 父页面中的 iframe元素 js判断是否是数字 js判断邮...

  • 关于jquery

    1、jquery获取元素 jquery首先页面加载,window.onload=function(){}替换成...

网友评论

      本文标题:JS/JQuery获取不到页面元素的几种可能性

      本文链接:https://www.haomeiwen.com/subject/hxdzfctx.html