zoukankan      html  css  js  c++  java
  • JavaScript基础(二) DOM

    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>DOM</title>
    </head>
    <body name="cc">
    <div id="div" name="cc">
        <ul type="square" id="myul">
            <li name="cc">苹果</li>
            <li>香蕉</li>
            <li>葡萄</li>
            <li>西瓜</li>
            <li>橘子</li>
        </ul>
    </div>
    <div>
        <ol type="A">
            <li>苹果</li>
            <li>香蕉</li>
            <li>葡萄</li>
            <li>西瓜</li>
            <li>橘子</li>
        </ol>
    </div>
    <button onclick="text1()">获取元素</button>
    <button onclick="text2()">获取元素2</button>
    <button onclick="test3(this)">给第一个div下面的列表添加新的列表值</button>
    <script>
    //    节点属性   节点.方法
    //nodeName:节点名字(节点名/#text)。
    //nodeValue:节点的值(nodeValue/null)。
    //nodeType :节点类型
    //document.documentElement : 取得<html>元素节点
    //ownerDocument:节点所属文档
    //firstChild,lastChild:第1个/最后一个节点。
    //childNodes:所有子节点列表
    //previousSibling:前一个兄弟节点,没有则为null。
    //nextSibling:后一个兄弟节点,没有则为null。
    //hasChildNodes():是否有子节点,返回true/false
    //attributes:元素节点的属性对象集合。
    //appendChild(node) :添加元素节点到childNodes中
    //removechild(node):从childNodes中删除节点
    //replaceChild(newNode,oldNode):替换节点
    //insertBefore(newNode,refNode):在refNode前插入节点

        function text1() {
    //        获取html元素节点
            var ohtml = document.documentElement;
    //        元素节点内的结构
            console.log(ohtml)
    //        nodeName获得的元素节点名称都为大写
            console.log(ohtml.nodeName)  //HTML
            console.log(ohtml.nodeValue)    //null
            console.log(ohtml.nodeType)     //1
    //        firstChild第一个子节点
            console.log(ohtml.firstChild)   //head元素节点
    //        lastChild最后一个子节点
            console.log(ohtml.lastChild)     //body元素节点
    //        document.body可以直接获得body元素
            console.log(document.body)
    //        childNodes获得子节点列表
            console.log(ohtml.childNodes)       //NodeList(3)?[head, text, body]
    //        一个按钮的情况下
            //#text DIV  #text  DIV  #text  BUTTON  #text  SCRIPT  #text
    //        body元素下面只有div、div、button、script但是它们之间的换行也算一个文本节点,文本节点名称(#text)
            for(var i=0; i<document.body.childNodes.length; i++){
                console.log(document.body.childNodes[i].nodeName);
            }
    //        previousSibling前一个兄弟节点,因为两个div节点之间有换行,所以输出的是 #text节点
            console.log(document.body.childNodes[3].previousSibling)    //#text
            console.log(document.body.childNodes[3].previousSibling.previousSibling)    //第一个div
    //        nextSibling后一个兄弟节点
            console.log(document.body.childNodes[3].previousSibling.nextSibling)        //第二个div
    //        attributes:元素节点的属性对象集合
            console.log(document.body.childNodes[1].childNodes[1].attributes)   //0:type 1:id
        }
    //访问元素节点

    //getElementsByTagName(name)
    //返回指定元素的名称的元素节点集合

    //getElementByTagName(*)能得到所有元素节点
    //getElementsByName(name)
    //按name属性值获取元素节点集合。

    //getElementById(id)
    //通过元素ID取得节点
    //兼容所有浏览器,推荐使用。

    //处理元素属性
    //元素节点.attributes取得元素属性集合
    //getNamedItem(name)-返回指定名称的属性节点
    //removeNamedItem(name)-删除指定名称的属性节点
    //setNamedItem(node)-添加属性节点
    //item(pos)-返回指定位置的节点
    //length属性 - 属性节点数量
    //getAtrribute(name)-取得指定名称属性的值。
    //setAttribute(name,value)-设置属性的名值对
    //removeAttribute(name)-删除属性

    //      innerHTML设置元素的内容,不适用文本节点,Table和select不支持
    //      nodeValue只使用文本节点,可用于修改属性值

    function text2() {
    //        getElementsByTagName通过元素节点名称返回元素节点集合
            var lis = document.getElementsByTagName('li')
            console.log(lis)    //HTMLCollection(10)?[li, li, li, li, li, li, li, li, li, li, cc: li]
    //        getElementsByName通过name属性值获得元素节点集合
            var cc = document.getElementsByName('cc')
            console.log(cc)   //NodeList(3)?[body, div.div, li]
    //        通过元素ID获得节点
            var odiv = document.getElementById('div')
            console.log(odiv)
    //      innerHTML设置元素的内容,不适用文本节点,Table和select不支持
            lis[0].innerHTML="修改"
    //      nodeValue只使用文本节点,可用于修改属性值
            lis[1].firstChild.nodeValue = '继续修改...'

        //下面几种方法是通过元素节点的属性集合处理元素属性(一般不推荐使用)
    //    getNamedItem(name)通过属性名在属性集合中找到属性
            console.log(odiv.attributes.getNamedItem('name'))
    //        找到属性后通过nodeValue修改属性值
            odiv.attributes.getNamedItem('name').nodeValue='bb'
    //    removeNamedItem(name)通过属性名删除属性节点
            odiv.attributes.removeNamedItem('name')
    //    createAttribute(string[] name)创建一个属性节点class
        var cal = document.createAttribute('class')
    //    nodeValue修改属性节点的值
        cal.nodeValue='cd'
    //    setNamedItem(node)-添加属性节点
        odiv.attributes.setNamedItem(cal)
    //    item(index)-返回指定位置的节点与odiv.attributes[0]效果相同
        console.log(odiv.attributes.item(0))

    //    下面几种方法是通过元素节点直接处理元素属性
    //    setAttribute(name,value)该方法可以直接通过元素节点添加、修改元素的属性
        odiv.setAttribute('value','lkj')
    //    getAttribute(name)通过属性名直接获得元素节点属性值
        console.log(odiv.getAttribute('class'))     //cd
    //    removeAttribute(name)通过属性名直接删除元素节点的属性
        odiv.removeAttribute('value')
    }

    //createElement(name)-创建元素节点
    //createTextNode(text)-创建文本节点
    //createAttribute(name)-创建属性节点

        function test3(obj) {
            var myul = document.getElementById('myul')
    //        createElement(name)创建元素节点
            var newli = document.createElement('li')
    //        newli.innerHTML='haha'与var txt = document.createTextNode('新节点');newli.appendChild(txt)效果相同
            newli.innerHTML='haha'
    //        appendChild(node) 添加子节点(添加到已有子节点的最后)
            myul.appendChild(newli)
            newli.setAttribute('name','newll')
        }
    </script>
    </body>
    </html>

    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>DOM的table操作</title>
    </head>
    <body>
    <button onclick="table()">实现九九乘法表</button>
    <div id="div"></div>
    <script>
    //    DOM提供了专门操作table的方法
    //    rows:表格的所有<tr>节点集合
    //    deleteRow(pos):删除指定位置的<tr>节点。
    //    insertRow(pos):在指定位置插入<tr>节点。
    //    cells:<tr>节点中的所有<td>集合
    //    deleteCell(pos):删除指定位置上的<td>节点
    //    insertCell(pos):在指定位置插入一个<td>节点

        function table() {
            var otb = document.createElement('table');
            document.getElementById('div').appendChild(otb);
            otb.style.border='1px solid blue';
            otb.style.borderCollapse='collapse';
            for(var i=0;i<9;i++){
                otb.insertRow();
                for(j=0;j<i+1;j++){
                    otb.rows[i].insertCell();
                    otb.rows[i].cells[j].innerHTML=(i+1)+"*"+(j+1)+"="+(i+1)*(j+1);
                    otb.rows[i].cells[j].style.border='1px solid blue';
                }
            }
            console.log(otb);
        }
    </script>
    </body>
    </html>

    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>BOM</title>
    </head>
    <body>
    <div id="div1">0</div>
    <button onclick="test1()">开始</button>
    <script>
        /*
        每隔一定时间执行一次代码
         var id=window.setTimeout("执行代码",毫秒数);
         window.clearTimeout(id)
        每隔一定时间循环执行代码
         var id=window.setInterval("执行代码",毫秒数);
         window.clearInterval(id);
        1 2 4 8 16 32 64
         */
        function test1() {
            var div1 = document.getElementById('div1');

    //        for(;;)
            div1.innerHTML = parseInt(div1.innerHTML)+1;

            if(parseInt(div1.innerHTML)<100){
                setInterval("test1()", 1000);
            }
        }
    </script>
    </body>
    </html>

  • 相关阅读:
    WampServer Mysql配置
    Java实现 蓝桥杯VIP 算法提高 陶陶摘苹果2
    Java实现 蓝桥杯VIP 算法提高 陶陶摘苹果2
    Java实现 蓝桥杯VIP 算法提高 陶陶摘苹果2
    Java实现 蓝桥杯VIP 算法提高 质因数2
    Java实现 蓝桥杯VIP 算法提高 质因数2
    Java实现 蓝桥杯VIP 算法提高 质因数2
    Java实现 蓝桥杯VIP 算法提高 质因数2
    Java实现 蓝桥杯VIP 算法提高 质因数2
    Java实现 蓝桥杯VIP 算法提高 前10名
  • 原文地址:https://www.cnblogs.com/snzd9958/p/10034191.html
Copyright © 2011-2022 走看看