js的对象操作~~~~三
继上一篇文章,DOM对象往下讲。
10、元素对象(element对象) 
** 要操作element对象,首先必须要获取到element, 
        - 使用document里面相应的方法获取 
** 元素对象操作属性:对属性进行增加 修改 删除 
    getAttribute(“属性的名”);   // 获得属性的值 
    setAttribute(“属性名”,”属性值”);    // 添加和修改 
    removeAttribute(“属性名”);   // 移除属性    
// 查找元素.
var input = document.getElementsByTagName("input")[0];
//alert(input.getAttribute("value"));//测试
//修改name属性的值
input.setAttribute("name","uname");//alert(input.getAttribute("name"));测试
// 添加一个属性id
alert(input.getAttribute("id"));
input.setAttribute("id","username");//alert(input.getAttribute("id"));测试
alert(input.name);
input.removeAttribute("name");
alert(input.getAttribute("name"));
【在标签下查找标签】 
** 使用属性 childNodes,但是这个属性兼容性很差 
** 获得标签下面子标签的唯一有效办法,使用getElementsByTagName方法
    // 查找第一个ul下的所有的li标签.
    // 1.先查找第一个ul标签.
    var city1 = document.getElementById("city1");
    // 2.再找ul下的li标签.
    //var childs = city1.childNodes; 测试
    //alert(childs.length);   测试
    var lis = city1.getElementsByTagName("li");//避免使用childNodes
    alert(lis.length);
11、Node对象 :节点对象(节点包括 元素节点 属性节点 文本节点),属性对象 
1.元素节点 
    nodeName:标签名   nodeType: 1  nodeValue:没有 null 
    属性节点 
    nodeName: 属性名   nodeType: 2   nodeValue:属性的值 
    文本节点 
    nodeName: #text   nodeType: 3    nodeValue:文本内容 
也就是说,对不同“节点操作”时,返回的结果时不一样的,例如说,对元素节点操作时,返回结果为:标签名字 。 nodeType = 1 ,没有返回值。而对其他的操作时,返回结果又不一样,看下面例子 
    // 分别获得元素节点的 节点名称 节点类型 节点的值.
            // 1.元素节点
            var input = document.getElementById("username");
            //alert(input.nodeName);    // output INPUT
            //alert(input.nodeType);    // output 1
            //alert(input.nodeValue);   // output null
            // 2.属性节点
            var attr = input.getAttributeNode("name"); // 获得属性节点.
            //alert(attr.nodeName);     // output   name
            //alert(attr.nodeType);     // output   2
            //alert(attr.nodeValue);    // output   username
            // 3.文本节点
            var p = document.getElementsByTagName("p")[0];
            var t = p.firstChild;
            alert(t.nodeName);              // output  #text
            alert(t.nodeType);              // output  3
            alert(t.nodeValue);             // output  文本
2.节点对象的父节点 子节点及同辈节点
<ul id="ul1">
        <li id= "li1">qqqqq</li>
        <li>wwww</li>
</ul>
1) * 父节点:
//得到li1
var li1 = document.getElementById("li1");
//得到ul
var ul1 = li1.parentNode;
alert(ul1.id);
2)* 子节点: 
        firstChild:获取第一个子节点 
        lastChild:获取最后一个子节点
    var ul1 = document.getElementById("ul1");
    //第一个子节点
    var li1 = ul1.firstChild;
    alert(li1.id);
    //lastChild:获取最后一个子节点
    var li4 = ul1.lastChild;
    alert(li4.id);
3)*  同辈节点: 
nextSibling: 返回一个给定节点的下一个兄弟节点。 
previousSibling:返回一个给定节点的上一个兄弟节点。
    //li直接关系是同辈节点
    //获取li的id是li3的上一个和下一个兄弟节点
    var li3 = document.getElementById("li3");
    alert(li3.nextSibling.id);
    alert(li3.previousSibling.id);
4)* 检测节点中是否有子节点和属性. 
        hasChildNodes() 
        hasAttributes() 
12操作dom树 
 
        【总结】* 获取节点使用方法 
            getElementById():通过节点的id属性,查找对应节点。 
            getElementsByName():通过节点的name属性,查找对应节点。 
            getElementsByTagName():通过节点名称,查找对应节点 
        * 插入节点的方法 
            insertBefore方法:在某个节点之前插入,   两个参数,新节点,旧节点 
            appendChild方法:在末尾添加,剪切黏贴 
        * 删除节点方法 
            removeChild方法:通过父节点删除 
        * 替换节点方法 
            replaceChild方法:通过父节点替换 
        * 复制节点方法: 
            cloneNode(boolean): 
//添加节点
    //获取li3 标签
    var li13 = document.getElementById("li13");
    //创建li
    var li15 = document.createElement("li");
    //创建文本
    var text15 = document.createTextNode("董小宛");
    //把文本添加到li下面 appendChild
    li15.appendChild(text15);
    //获取到ul
    var ul21 = document.getElementById("ulid21");
    //在<li>貂蝉</li>之前添加 <li>董小宛</li> 
    //insertBefore(newNode,oldNode)新节点,旧节点
    ul21.insertBefore(li15,li13);
//删除节点
    //获取li标签
    var li24 = document.getElementById("li24");
    //获取父节点:两种方式  1、通过id获取 ; 2、通过属性 parentNode获取
    var ul31 = document.getElementById("ulid31");
    //删除(通过父节点)
    ul31.removeChild(li24);
//替换节点
    //获取li34
    var li34 = document.getElementById("li34");
    //创建li
    var li35 = document.createElement("li");
    //创建文本
    var text35 = document.createTextNode("张无忌");
    //把文本添加到li下面
    li35.appendChild(text35);
    //获取ul
    var ul41 = document.getElementById("ulid41");
    //替换节点,父节点来调用该方法
    ul41.replaceChild(li35,li34);   
//复制节点
    //获取ul
    var ul41 = document.getElementById("ulid41");
    //复制ul,放到类似剪切板里面
    var ulcopy = ul41.cloneNode(true)
    //获取到div
    var divv = document.getElementById("divv");
    //把副本放到div里面去
    divv.appendChild(ulcopy);
13、innerHTML属性,虽然 这个属性不是dom的组成部分,但是大多数浏览器都支持的属性 
 
第一个作用:获取文本内容
    //获取span标签
    var span1 = document.getElementById("sid");
    alert(span1.innerHTML);
第二个作用:向标签里面设置内容(可以是html代码)
    //向div里面设置内容 <h1>AAAAA</h1>
    //获取到div
    var div11 = document.getElementById("div11");
    //设置内容
    div11.innerHTML = "<h1>AAAAA</h1>";
 
14、JS中的事件:记住这些常见的时间旧可以了额 
 
onclick:单击 
ondblclick:双击 
onchange:列表框改变事件 
onmouseover:鼠标放在上面    onmouseout:鼠标离开  onmousemove:鼠标移动. 
onload:页面加载时间   onunload:页面的卸载事件. 
onblur:失去焦点   onfocus:获得焦点. 
onkeyup:键盘事件  onkeydown:键盘事件 
                    
                
                
            
        
浙公网安备 33010602011771号