js nextSibling属性和previousSibling属性概述及使用注意

1:nextSibling属性
该属性表示当前节点的下一个节点(其后的节点与当前节点同属一个级别);如果其后没有与其同级的节点,则返回null。
需要特别注意的是:该属性在不同的浏览器中的执行结果并不都相同,见下面例示:
先来看一个例子:

该对象的结构表面上看,div的nextSibling只有2项——两个input节点。但实际上有5项——/n,input,/n,input,/n。这是因为input作为创建各种表单输入控件的标签,无论是生成button、checkbox、radio...等或其他表单控件,IE都会自动在后面创建一个1字节位的空白。 IE将跳过在节点之间产生的空格文档节点(如:换行字符),而Mozilla不会这样——FF会把诸如空格换行之类的排版元素视作节点读取,因此,在ie中用nextSibling便可读取到的下一个节点元素,在FF中就需要这样写:nextSibling.nextSibling了。 opera和safari对nextSibling的处理方式与FF一致 

2:previousSibling属性 该属性与nextSibling属性的作用正好相反。例如:someTagObject.nextSibling.previousSibling其实返回的是该标签元素本身,但前提必须是:该标签元素的后面必须有一个同级的元素,否则就返回null了。 

3:通过nextSibling或者 previousSibling所获得的HTML标签元素对象的属性问题 一般先通过nextSibling.nodeName来获知其标签名,或者通过nextSibling.nodeType来获知其标签类型,然后,如果该nextSibling.nodeName = #text,则通过nextSibling.nodeValue来获知其文本值;否则,可以通过nextSibling.innerHTML等其他常用标签元素属性来获取其属性。 
1 <body>
2 <div>
3 <input id="a4" type="button" onclick="alert(this.nextSibling);" value="d" />
4 <input id="a5" type="button" onclick="alert(this.nextSibling);" value="e" />
5 </div> 
<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title></title>
        <script type="text/javascript">
               window.onload = function(){
        var selectContents = "",//待填充的文本
                _selectContent = document.getElementsByName("getSelectContent"),
                i = 0,
                sl = _selectContent.length;//获取元素的长度即个数

        for(;  i < sl ; i++){//限制复选框最多选择3项
            _selectContent[i].onclick = function(){
 var _t = this.nextSibling.nextSibling.innerHTML;
//var _t = this.nextSibling.nextSibling.innerHTML; console.log(this.nextSibling.nodeName);
                  console.log(this.nextSibling.nodeType);
                if(this.checked){//如果内容被选中,则填充文本,否则删除
                    selectContents += "<br />" + _t;
                }else{
                    selectContents = selectContents.replace("<br />" + _t, "")
                }
                document.getElementById("selectedContents").innerHTML = "被选择的内容:"+selectContents;//填充html文本
            }

        }
    };

        </script>
    </head>

    <body>
        <h2>获取复选框所有选中内容</h2>
        <ul>
            <li>
                <input type="checkbox" name=‘getSelectContent‘>
                <div class="contentCheckbox">等待选择的内容····1</div>
            </li>
            <li>
                <input type="checkbox" name=‘getSelectContent‘>
                <div class="contentCheckbox">等待选择的内容····2</div>
            </li>
            <li>
                <input type="checkbox" name=‘getSelectContent‘>
                <div class="contentCheckbox">等待选择的内容····3</div>
            </li>
        </ul>
        <p id=‘selectedContents‘>被选择的内容:选择内容为空</p>

    </body>

</html>
时间: 2024-09-29 23:55:24

js nextSibling属性和previousSibling属性概述及使用注意的相关文章

swfupload js中 file 对象的属性

name=3cc68cfc60b87e6dd6887d8a.jpg modificationdate=Wed   Apr 21 15:48:30 UTC+0800 2010 filestatus=-1 post=[object   Object] type=.jpg index=0 size=29006 creationdate=Wed Apr 21 15:48:38 UTC+0800   2010 id=SWFUpload_0_0swfupload js中 file 对象的属性,布布扣,bub

js小记 function 的 length 属性

原文:js小记 function 的 length 属性 [1,2,3].length  可以得到 3, "123".length  也可以得到 3,这个略懂js的都知道. 但是  eval.length,RegExp.length,"".toString.length,1..toString.length  会得到什么呢? 分别得到 1,2,0,1,这些数字代表什么呢? 这个是群里很多新人朋友一直问的一个问题,其实函数的 length 得到的是形参个数.可以参见这

js中的访问器属性中的getter和setter函数实现数据双向绑定

嗯,之前在读js红宝书的时候,在对象那一章有介绍属性类型.第一种数据类型指的是数据属性,第二种是访问器属性.在初识vue的时候,其双向数据绑定也是基于访问器属性中的getter和setter函数原理来实现的.本篇文章就着重解析这两个函数的工作原理. 首先,我们先创建一个a对象,并给他定义了一个默认的属性_b,_b前面的下划线是一种常用的记号,用于表示只能通过对象方法访问的属性. var a={ _b=5;}; 接着定义一个属性为'c'的访问器属性,该属性包含一个get和set函数,get函数用来

js另存为、打印、属性、加入收藏、关闭等代码

js打开代码 <input name=Button onClick=document.all.WebBrowser.ExecWB(1,1) type=button value=打开> <OBJECT classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 id=WebBrowser width=0></OBJECT> 可能提示“权限不足” js另存为代码 <input name=Button onCl

js,jq设置获取属性,样式

js设置获取属性:设置属性-element.setAttribute("属性名称","属性值"):获取属性-element.getAttribute("属性名称"): jq设置获取属性:attr() js获取行内样式:document.getElementById(“button″).style.width; js获取css文件里样式: IE var width = mydiv.currentStyle['width']: Chorme  var

js中获取css样式属性值

关于js中style,currentStyle和getComputedStyle几个注意的地方 (1)用js的style只能获取元素的内联样式,内部样式和外部样式使用style是获取不到的. (2)currentStyle可以弥补style的不足(可获取内联样式,内部样式和外部样式),但是只适用于IE. (3)getComputedStyle同currentStyle作用相同,但是适用于FF.opera.safari.chrome. 注意: ① currentStyle和getComputedS

java学习--基础知识进阶第十三天--反射机制的概述和字节码对象的获取方式、反射操作构造方法、成员方法、成员属性、JavaBean的概述&amp;BeanUtils的使用、自定义BeanUtils工具类

今日内容介绍 u 反射机制的概述和字节码对象的获取方式 u 反射操作构造方法.成员方法.成员属性 u JavaBean的概述&BeanUtils的使用 u 自定义BeanUtils工具类 第1章 反射机制概述.字节码对象的获取方式.反射操作构造方法.成员方法.成员属性 1.1 反射机制的概述和字节码对象的获取方式 1.1.1 反射介绍 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象,都能够调用它的任意一个方法        这种动态获取的以及动

JS所有内置对象属性和方法汇总

JS三大对象 对象,是任何一个开发者都无法绕开和逃避的话题,她似乎有些深不可测,但如此伟大和巧妙的存在,一定值得你去摸索.发现.征服. 我们都知道,JavaScript有3大对象,分别是本地对象.内置对象和宿主对象. 在此引用ECMA-262(ECMAScript的制定标准)对于他们的定义: 本地对象 与宿主无关,独立于宿主环境的ECMAScript实现提供的对象. 简单来说,本地对象就是 ECMA-262 定义的类(引用类型). 这些引用类型在运行过程中需要通过new来创建所需的实例对象. 包

JavaScript面向对象(二)——成员属性、静态属性、原型属性与JS原型链

前  言 上一篇博客(https://www.cnblogs.com/qdjianghao/p/10177360.html )中,我们介绍了JS中的面向对象,并详细的解释了this的指向问题.本篇博客,我们继续来学习JS的面向对象.来深入理解一下JavaScript OOP中的成员属性/方法.静态属性/方法.原型属性/方法,并且一起来探讨一下JS中的原型与原型链. 一 成员属性与成员方法 在构造函数中,通过this.属性声明.或者实例化出对象后,通过"对象.属性"追加的.都属于成员属性