原生js firstChild 获取元素的第一个节点问题

  • firstChild 获取当前元素节点下的第一个子节点。

    • 获取到的子节点可能是元素节点,但编程中更可能是注释节点或文本节点。
    • 没有子节点则返回null
下面引用代码说明

下面代码我们需求是获取div的第一个子元素节点。但是结果返回的是文本节点,因为兼容问题,
. 在IE9+和其他标准浏览器中,div与p之间的空白区域被认为是第一个子节点为空白节点(即文本节点),div显示数字3。
. 在IE8和IE8以下浏览器中,div显示数字1,是元素节点。声明 <!DOCTYPE>,与IE9+和其他标准浏览器一致。

<div id="demo"><p >我是第1个p</p><p >我是第2个p</p><p >我是第3个p</p>
</div>
<script type="text/javascript">let ul = document.getElementById("demo");let first =ul.firstChild;console.log(first.nodeType);   //3      nodeType 属性返回以数字值返回指定节点的节点类型。1 代表元素节点   2 代表属性节点   3 代表文本节点
</script>

这里我们可以这样做
把空白部分清空(根据具体需求,这里不推荐)

<div id="demo"><p >我是第1个p</p><p >我是第2个p</p><p >我是第3个p</p></div>
<script type="text/javascript">let ul = document.getElementById("demo");let first =ul.firstChild;console.log(first.nodeType);   //1      nodeType 属性返回以数字值返回指定节点的节点类型。1 代表元素节点   2 代表属性节点   3 代表文本节点
</script>

也可以使用firstElementChild代替firstChild

<div id="demo"><p >我是第1个p</p><p >我是第2个p</p><p >我是第3个p</p>
</div>
<script type="text/javascript">let ul = document.getElementById("demo");let first =ul.firstElementChild;console.log(first.nodeType);   //1      nodeType 属性返回以数字值返回指定节点的节点类型。1 代表元素节点   2 代表属性节点   3 代表文本节点
</script>

原生js firstChild 获取元素的第一个节点兼容问题(需求获取元素节点)相关推荐

  1. 编写程序,从键盘输人 10个整数,之间以一个空格隔开,存放在一维数组中。找出值最大和最小的元素,第一行输出最大值及其所在的元素下标,之间以一个空格隔开;第二行输出最小值及其所在的元素下标,之间以一个空

    题目:编写程序,从键盘输人 10个整数,之间以一个空格隔开,存放在一维数组中.找出值最大和最小的元素,第一行输出最大值及其所在的元素下标,之间以一个空格隔开;第二行输出最小值及其所在的元素下标,之间以 ...

  2. js 获取当月的第一天和最后一天 日期格式化 获取距离上次的时间间隔

    1获取当月的第一天 function getCurrentMonthFirst() {var date = new Date()date.setDate(1)return date } 2.获取当月的 ...

  3. 原生JS forEach()和map()遍历的区别以及兼容写法

    一.原生JS forEach()和map()遍历 共同点: 1.都是循环遍历数组中的每一项. 2.forEach() 和 map() 里面每一次执行匿名函数都支持3个参数:数组中的当前项item,当前 ...

  4. Android 获取 OAID ,替换 IMEI (兼容 Android 10获取IMEI问题)

    序 今天是在北京隔离的第十天 ,下周我就能去公司了 . OAID 简介 因传统的移动终端设备标识如国际移动设备识别码(IMEI)等已被部分国家认定为用户隐私的一部分,并存在被篡改和冒用的风险,所以在A ...

  5. 输入一个整数矩阵,计算位于矩阵边缘的元素之和。所谓矩阵边缘的元素,就是第一行和最后一行的元素以及第一列和最后一列的元素。

    输入格式 第 1 行包含两个整数,分别为行数 m 和列数 n,两个整数之间空格隔开. 第 2 行开始有 m 行数据,每行包含 n 个整数,整数之间空格隔 开. 输出格式 对应矩阵的边缘元素和 例如: ...

  6. 原生js获取和设置页面垂直滚动高度

    最近想用原生js实现一些交互效果,以下代码是返回顶部按钮要用到的一个方法:获取和设置页面垂直滚动高度,如果用jq可以简单实现,用原生js,其实就是要多考虑浏览器的兼容性: /*** 获取&&a ...

  7. 用原生 JS 实现双向绑定及应用实例

    写在前面: 所谓的双向绑定,无非是从界面的操作能实时反映到数据,数据的变更也能实时展现到界面.angular封装了双向绑定的方法,使双向绑定变得十分简单.但是在有些场景下(比如下面那个场景),不能使用 ...

  8. 原生js实现移动动画,变化动画

    初生牛犊不怕虎,想用博客来记录自己以前的一些学习经历,对您有帮助的话请留下你们的赞哦! 话不多说进入正题 首先我们应该怎么用原生js实现动画,思路是这样的 通过某些方法获取到当前元素的样式属性值,例如 ...

  9. java 获取当月第一天和最后一天 获取前一个月第一天和最后一天

    2019独角兽企业重金招聘Python工程师标准>>> SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd ...

最新文章

  1. E: Could not get lock /var/lib/dpkg/lock解决
  2. 百度爬虫爬到虚拟链接 网站被黑_网站地图sitemap对SEO优化有什么作用?
  3. 通讯实例 modbus_实例讲解PLC实现modbus通讯
  4. modbus-rtu qt4-serialport3--------micro2440 as device
  5. Error message Exception raised without specific error
  6. CSS样式表的规划与组织
  7. linux es连接mysql_Linux下ES,kibana,mysql,kafka,zookeeper启动关闭方式
  8. archery docker部署
  9. 20175204 张湲祯 2018-2019-2《Java程序设计》第三周学习总结
  10. EasyBCD 2.4 个人版下载
  11. 基于设备树的TQ2440的中断(2)
  12. 从零开始一起学习SLAM | 相机成像模型
  13. 操作系统实验Mit6.S081笔记 Lab4: Traps
  14. php如何验证银行卡号,PHP效验银行卡卡号
  15. Everyone Do this at the Beginning!!--kaggle数据预处理-超详细的解说
  16. 龙泉寺贤超法师:用AI为古籍经书识别、断句、翻译
  17. 自定义异常BizException
  18. 卡尔曼滤波模型及Matlab模型建立
  19. dw版权信息栏如何制作_dw网页制作过程?用dw怎么制作网页?
  20. 修改IDEA默认配置路径

热门文章

  1. 大唐杯仿真实验模拟满分操作详解(省级)
  2. 1760 - 综合练习- bombing
  3. 鼠标坏了,鼠标单击变双击怎么办?微动开关怎么拆?
  4. 在ubuntu下使用有道词典
  5. Vue 12 - 条件渲染 v-show v-if
  6. vivo浏览器不兼容bootstrap 3.3.7问题的解决
  7. python,路径拼接,字符串拼接,os.path.join()函数怎么用?
  8. 【教学视频】LCR数字电桥如何选择并联或串联模式?
  9. 2022-12-19:大的国家。如果一个国家满足下述两个条件之一,则认为该国是 大国 : 面积至少为 300 万平方公里(即,3000000 km2),或者 人口至少为 2500 万(即 250000
  10. 部分地区联通iphone4涨价300元