jquery nextsibling_javascript中预编译

jquery nextsibling_javascript中预编译JavaScript中的nextSibling和previousSibling和作用类似于jquery的next()和prev(),都是获取下一个/上一个同胞元素,如果下一个同级节点不存在,则此属性返

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

JavaScript中的nextSiblingpreviousSibling和作用类似于jquery的next()和prev(),都是获取下一个/上一个同胞元素,如果下一个同级节点不存在,则此属性返回值是null。但是具体的使用中还是有差异的,如果注意。就会引起错误

html结构中的各种空格,换行符都可能会把文本节点当做同胞元素处理。这就会导致错误。

例如下面代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script> window.onload = function() { var nextType = document.getElementById('one').nextSibling; alert(nextType.nodeType); } </script>
</head>
<body>
    <div id="div">
        <p id = "one">我是p</p>
        <span id="two">我是span</span>
    </div>
</body>
</html>

在上面这段代码中,我获取了id为”one”的元素并用nextSibling获取了他的下一个同胞元素。赋值给了变量nextType

   var nextType = document.getElementById('one').nextSibling;

  并使用

  alert(nextType.nodeType);

弹出他的节点类型,如果按常理,元素p下一个相邻的同胞元素为是span,弹出的数字应该为“1”,但我再火狐,谷歌,IE浏览器(网上说只有火狐才会把换行,空格当做文本节点处理,但是我测试谷歌,IE浏览器效果都是一样的,这有点不解)打开后,弹出的数字是3,jquery nextsibling_javascript中预编译

 

也就是文本节点。这是因为换行符被当做文本节点来处理,成为了p元素的下一个同胞元素。

 

如果我要获取我是span的文本值,需要这样写

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script>
    window.onload = function() {
        var nextType = document.getElementById('one').nextSibling;
        var span = nextType.nextSibling;
     alert(span.lastChild.nodeValue);
   }
    </script>
</head>
<body>
    <div id="div">
        <p id = "one">我是p</p>
        <span id="two">我是span</span>
    </div>
</body>
</html>

p和span标签中间隔着文本节点,需要连续使用2次nextSibling才能选中span标签取得文本值

jquery nextsibling_javascript中预编译

firstChild,lastChild,nextSibling,previousSibling都会将空格或者换行当做节点处理,但是有代替属性

所以为了准确地找到相应的元素,会用

firstElementChild,

lastElementChild,

nextElementSibling,

previousElementSibling

兼容的写法,这是JavaScript自带的属性。

但坏消息是IE6,7,8不兼容这些属性。IE9以上和火狐谷歌支持。

 

于是我写了一个接口口,测试能在包括ie6在内运行的函数(自己写的,不知有没有其他什么细节错误没注意,反正能运行并且过滤文本节点获取正确的下一个元素节点)

 

    function getNextElement(element){
            var e = element.nextSibling;
            if(e == null){//测试同胞节点是否存在,否则返回空
                return null;
            }
            if(e.nodeType==3){//如果同胞元素为文本节点
                var two = getNextElement(e);
                if(two.nodeType == 1)
                    return two;
            }else{
                if(e.nodeType == 1){//确认节点为元素节点才返回
                    return e;
                }else{
                    return false;
                }
            }
        }

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/167464.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 混合高斯背景建模原理_高斯图模型

    混合高斯背景建模原理_高斯图模型在运动目标检测提取中,背景目标对于目标的识别和跟踪至关重要。而建模正是背景目标提取的一个重要环节。前景是指在假设背景为静止的情况下,任何有意义的运动物体即为前景。运动物体检测的问题主要分为两类,摄像机固定和摄像机运动。对于摄像机运动的运动物体检测问题,比较著名的解决方案是光流法,通过求解偏微分方程求的图像序列的光流场,从而预测摄像机的运动状态。对于摄像机固定的情形,当然也可以用光流法,但是

    2025年5月28日
    3
  • 大学生英语竞赛常考词汇汇总_全国大学生英语竞赛难吗

    大学生英语竞赛常考词汇汇总_全国大学生英语竞赛难吗abbreviation节略,缩写,缩短abidevi遵守,vt忍受absent不在意的abolishvt废除,取消abstracta理论上的,n抽象accessory同谋a附属的accord调和,符合,协议acknowledgevt承认,告知收到acquaintvt使认识,使了解adherevi黏附,追随,坚持adjoinvt贴近,毗连,靠近adjustablea.可调整的,可校准的administrationn局(或署、处等)

    2022年8月24日
    8
  • MT4下载怎么下?「建议收藏」

    MT4下载怎么下?「建议收藏」在哪里可以下载到mt4了?个人装了一些像应用宝这类的搜索软件,里面找不到地方下载MT4这个应用软件,怎么样,实际上到百度一搜索就能找到。当输入MT4的时候,会看到下拉框有这么多选择,只需选MT4安卓手机版输入便可`mt4download.cn`搜索出来肯定有很多下载链接,怎样选,正常选第一个搜索主页,【正版】MT4软件【免费下载】来自官网或正规下载网站,切记不要到那类广告网站,会给你电脑安装很多垃圾软件,使系统变得非常慢。点进这个链接后,你就能看到MetaTrader4广受欢迎的软件,根据你手机的操作系

    2022年8月15日
    11
  • centos利用yum安装卸载软件常用命令

    centos利用yum安装卸载软件常用命令

    2021年10月8日
    42
  • 字符串转整型c#_java字符串数组转字符串

    字符串转整型c#_java字符串数组转字符串在C++11中增加了string的字符串以及整数之间的转换函数标准增加了全局函数。std::to_stringstd::stoistd::stolstd::stoll用来将整型转换为字符串for(size_ti=0;i<14;i++){ stringfileName=”chID”+std::to_string(i)+”.hex”;}…

    2022年10月19日
    4
  • 适用于protel99SE初学者

    适用于protel99SE初学者本文适合零基础者学习protel99SE很多网友渴望自己设计电路原理图(SCH)、电路板(PCB),同时希望从原始SCH到PCB自动布线、再到成品PCB电路板的设计周期可以缩短到1天以内!是不是不可能呢?当然不是,因为现在的EDA软件已经达到了几乎无所不能的地步!由于电子很重实践,可以说,不曾亲自设计过PCB电路板的电子工程师,几乎是不可想象的。很多电子爱好者都有过学…

    2022年5月7日
    52

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号