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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 树莓派命令连接wifi_使用命令行设置树莓派的wifi网络「建议收藏」

    树莓派命令连接wifi_使用命令行设置树莓派的wifi网络「建议收藏」如果你没有登录到常用的图形用户界面,这种方法就适合用来设置树莓派的wifi。尤其是在你没有屏幕或者有线网络,仅使用串口控制线的时候。另外,这种方法也不需要额外的软件,所有需要的东西都已经包含进了树莓派。GETTINGWIFINETWORKDETAILS(获取wifi网络详情)为了扫描wifi网络,可以使用sudoiwlistwlan0scan命令。这个命令会列出所有可使用的wifi网络…

    2022年5月5日
    271
  • centos7.2安装rabbitmq和宝塔[通俗易懂]

    centos7.2安装rabbitmq和宝塔[通俗易懂]centos7.2安装rabbitmq和宝塔

    2022年4月23日
    51
  • ARM64架构、国产系统UOS、银河麒麟离线安装jdk1.7、jdk1.8,jdk7、jdk8离线安装(100%成功)

    ARM64架构、国产系统UOS、银河麒麟离线安装jdk1.7、jdk1.8,jdk7、jdk8离线安装(100%成功)Linuxarm64架构下安装jdk1.7、jdk1.8说明:理论上适用于arm64架构的Linux系统,目前在银河麒麟、UOS测试可安装通过1.挂载ISO介质上传Kylin-4.0.2-FT2000Plus.iso到服务器到/opt/目录下,(如果没有该介质,请向笔者索要,网盘下载)创建挂载目录mkdir/mnt/apt挂载isomount/opt/Kylin-4.0.2-FT2000Plus.iso/mnt/apt2.修改本地源先备份本地源cp/et

    2022年6月3日
    312
  • 手写算法-python代码实现Lasso回归

    手写算法-python代码实现Lasso回归手写算法-python代码实现Lasso回归Lasso回归简介Lasso回归分析与python代码实现1、python实现坐标轴下降法求解Lasso调用sklearn的Lasso回归对比2、近似梯度下降法python代码实现LassoLasso回归简介上一篇文章我们详细介绍了过拟合和L1、L2正则化,Lasso就是基于L1正则化,它可以使得参数稀疏,防止过拟合。其中的原理都讲的很清楚,详情可以看我的这篇文章。链接:原理解析-过拟合与正则化本文主要实现python代码的Lasso回归,并用实例佐证原

    2022年5月25日
    80
  • laravel 分页样式「建议收藏」

    laravel 分页样式「建议收藏」第一种//控制器$news=News::where(‘type_id’,1)->where(‘is_del’,1)->paginate(3);//前端@if($news->currentPage()==1)@else<li><ahref=”{{url(‘news?page=1’)}}”>首页</a></li><li><ahref=”{{$news->previousPag

    2022年7月17日
    15
  • 网络常用端口号大全图片_windows关闭不必要的端口

    网络常用端口号大全图片_windows关闭不必要的端口端口号—具有网络功能的应用软件的标识号。注意,端口号是不固定的,即可以由用户手工可以分配(当然,一般在软件编写时就已经定义)。当然,有很多应用软件有公认的默认的端口,比如FTP:20和21,HTTP:80,TELNET:23等等,这里就不一一列举了。一个软件可以拥有多个端口号,这证明这个软件拥有不止一个网络功能。0-1023是公认端口号,即已经公认定义或为将要公认定义的软件保留的,而102…

    2025年11月7日
    3

发表回复

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

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