DOM操作

目录

 

一、定义

二、查找元素

1、直接查找

2、间接查找

三、节点类型

四、节点关系

五、各种参数列表

1、选择器

2、样式操作方法style

3、表格操作方法

4、表单操作方法

5、元素节点ELEMENT

6、属性节点attributes

7、文本节点TEXT

8、文档节点 Document

9、位置操作方法

六、详细操作

1、内容

2、属性

正反先示例:

3、class操作

4、标签操作

5、样式操作

6、位置操作

7、提交表单

8、定时器

9、弹出框

10、location

 

11、其它(history)

七、事件

1、注册 事件

2、事件列表

实例:

1、跑马灯

2、window对象的方法

3、属性查找

4、模态对话模框

5、onload 和其他的不太一样,他是写在Javascirpt里的,当js放在head里面就很有用了

6、事件传播

7、二级联动

8、输入框


一、定义

文档对象模型(Document Object Model,DOM)是一种用于HTML和XML文档的编程接口。它给文档提供了一种结构化的表示方法,可以改变文档的内容和呈现方式。我们最为关心的是,DOM把网页和脚本以及其他的编程语言联系了起来。DOM属于浏览器,而不是JavaScript语言规范里的规定的核心内容。

二、查找元素

1、直接查找

document.getElementById             根据ID获取一个标签   获取的是单个标签
document.getElementsByName          根据name属性获取标签集合 注意获取的是一个 ******数组********
document.getElementsByClassName     根据class属性获取标签集合
document.getElementsByTagName       根据标签名获取标签集合

2、间接查找

parentNode          // 父节点
childNodes          // 所有子节点
firstChild          // 第一个子节点
lastChild           // 最后一个子节点
nextSibling         // 下一个兄弟节点
previousSibling     // 上一个兄弟节点
 
parentElement           // 父节点标签元素
children                // 所有子标签
firstElementChild       // 第一个子标签元素
lastElementChild        // 最后一个子标签元素
nextElementtSibling     // 下一个兄弟标签元素
previousElementSibling  // 上一个兄弟标签元素

 

三、节点类型

      节点类型都有NodeType属性来表明节点类型

节点类型描述
1Element代表元素
2Attr代表属性
3Text代表元素或属性中的文本内容。
4CDATASection代表文档中的 CDATA 部分(不会由解析器解析的文本)。
5EntityReference代表实体引用。
6Entity代表实体。
7ProcessingInstruction代表处理指令。
8Comment代表注释。
9Document代表整个文档(DOM 树的根节点)。
10DocumentType向为文档定义的实体提供接口
11DocumentFragment代表轻量级的 Document 对象,能够容纳文档的某个部分
12Notation代表 DTD 中声明的符号。

四、节点关系

nodeType返回节点类型的数字值(1~12)
nodeName元素节点:标签名称(大写)、属性节点:属性名称、文本节点:#text、文档节点:#document
nodeValue文本节点:包含文本、属性节点:包含属性、元素节点和文档节点:null
parentNode父节点
parentElement父节点标签元素
childNodes所有子节点
children第一层子节点
firstChild第一个子节点,Node 对象形式
firstElementChild第一个子标签元素
lastChild最后一个子节点
lastElementChild最后一个子标签元素
previousSibling上一个兄弟节点
previousElementSibling上一个兄弟标签元素
nextSibling下一个兄弟节点
nextElementSibling下一个兄弟标签元素
childElementCount第一层子元素的个数(不包括文本节点和注释)
ownerDocument指向整个文档的文档节点

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div id="t">
        <span></span>
        <span id="s">
            <a></a>
            <h1>Aaron</h1>
        </span>
        <p></p>
    </div>
    <script>
        var tT = document.getElementById("t");
        console.log(tT.nodeType,tT.nodeName,tT.nodeValue); //1 "DIV" null
        console.log(tT.parentNode); //<body>...</body>
        console.log(tT.childNodes); //[text, span, text, span#s, text, p, text]
        console.log(tT.children); //[span, span#s, p, s: span#s]

        var sT = document.getElementById("s");
        console.log(sT.previousSibling); //#text, Node 对象形式
        console.log(sT.previousElementSibling); //<span></span>
        console.log(sT.nextSibling); //#text
        console.log(sT.nextElementSibling); //<p></p>
        console.log(sT.firstChild); //#text
        console.log(sT.firstElementChild); //<a></a>
        console.log(sT.lastChild); //#text
        console.log(sT.lastElementChild); //<h1>Aaron</h1>

        console.log(tT.childElementCount); //3
        console.log(tT.ownerDocument); //#document

    </script>
</body>
</html>

节点关系方法:

hasChildNodes()  包含一个或多个节点时返回true

contains()  如果是后代节点返回true

isSameNode()、isEqualNode()  传入节点与引用节点的引用为同一个对象返回true

compareDocumentPostion()  确定节点之间的各种关系

数值     关系 
1      给定节点不在当前文档中
2      给定节点位于参考节点之前
4      给定节点位于参考节点之后
8      给定节点包含参考节点
16    给定节点被参考节点包含
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div id="t">
        <span></span>
        <span id="s">
            <a></a>
            <h1>Nick</h1>
        </span>
        <p></p>
    </div>
    <script>
        var tT = document.getElementById("t");
        var sT = document.getElementById("s");


        console.log(tT.hasChildNodes()); //true
        console.log(tT.contains(document.getElementById('s'))); //true
        console.log(tT.compareDocumentPosition(document.getElementById('s'))); //20,因为s被tT包含,所以为16;而又在tT之后,所以为4,两者相加为20.
        console.log(tT.isSameNode(document.getElementById('t'))); //true
        console.log(tT.isEqualNode(document.getElementById('t'))); //true
        console.log(tT.isSameNode(document.getElementById('s'))); //false
    </script>
</body>
</html>

 

五、各种参数列表

1、选择器

getElementById()

一个参数:元素标签的ID
getElementsByTagName()一个参数:元素标签名
getElementsByName()一个参数:name属性名
getElementsByClassName()一个参数:包含一个或多个类名的字符串

classList

返回所有类名的数组

  • add (添加)
  • contains (存在返回true,否则返回false)
  • remove(删除)
  • toggle(存在则删除,否则添加)
querySelector()接收CSS选择符,返回匹配到的第一个元素,没有则null
querySelectorAll()接收CSS选择符,返回一个数组,没有则返回[]

document.getElementById('id')  查找指定的id,然后我们可以进行操作:

<body>
    <div id="id_1">
        123
    </div>
    
    <script type="text/javascript">
        var i = document.getElementById('id_1'); //查找指定的id
        i.innerText = '456'; //innerText修改指定的字符串
    </script>
</body>

显示效果,当我们打开IE的时候123就会被修改为456

下面操作方式也类似:

document.getElementsByName('name'):

<body>
    <div name="name_1">
        123
    </div>

    <script type="text/javascript">
        var i = document.getElementsByName('name_1'); //查找指定的name,这里和ID不一样name可以有多个
        for (var item in i) {
            i[item].innerText = '456'; //innerText修改指定的字符串
        };
    </script>
</body> 

document.getElementsByTagName('tagname')

<body>
    <div>
        123
    </div>
    <div>
        234
    </div>
    <script type="text/javascript">
        var i = document.getElementsByTagName('div'); //查找指定的标签类型,这里同样和ID不一样标签比如<div>标签可以有多个
        for (var item in i) {
            i[item].innerText = '456'; //innerText修改指定的字符串
        };
    </script>
</body>

 

2、样式操作方法style

style.cssText可对style中的代码进行读写
style.item()返回给定位置的CSS属性的名称
style.lengthstyle代码块中参数个数
style.getPropertyValue()返回给定属性的字符串值
style.getPropertyPriority()检测给定属性是否设置了!important,设置了返回"important";否则返回空字符串
style.removeProperty()删除指定属性
style.setProperty()设置属性,可三个参数:设置属性名,设置属性值,是否设置为"important"(可不写或写"")
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div id="t" style="background-color: yellow; width: 100px; height: 100px">8</div>

    <script>
        var tT = document.getElementById("t");
        console.log(tT.style.cssText); //width: 100px; height: 100px; background-color: yellow;
        tT.style.cssText = "background-color: yellow; width: 200px; height: 200px"; //修改属性
        console.log(tT.style.cssText); //width: 200px; height: 200px; background-color: yellow;
        console.log(tT.style.item("0")); //background-color
        console.log(tT.style.length); //3
        console.log(tT.style.getPropertyValue("background-color")); //yellow
        console.log(tT.style.getPropertyPriority("background-color")); //空字符串
        console.log(tT.style.removeProperty("width")); //200px
        tT.style.setProperty("width","200px",""); //设置属性,第三个值为important优先值,可不写
        
    </script>
</body>
</html>

3、表格操作方法

createTHead()

创建<thead>元素,返回引用

deleteTHead()

 删除<thead>元素

createTBody()

创建<tbody>元素,返回引用

insertRow(0)

插入<tr>元素,从0开始

deleteRow(pos)

 删除指定位置的行

insertCell(0)

插入<td>元素,从0开始

deleteCell(pos)

 删除指定位置的单元格

4、表单操作方法

document.forms

获取所有表单

.submit()

提交表单
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <form action="https://www.baidu.com/s" method="get">
        <input type="text" name="wd" />
        <input type="button" value="百度一下" onclick="this.disable=true;BaiDu(this);" />
    </form>

    <script>
        var form = document.forms;  //获取所有表单
        var formOne = form[0];
        console.log(form);
        console.log(formOne);

        function BaiDu(ths) {
            var inputBaiDu = ths;
            inputBaiDu.parentNode.submit();
        }
    </script>
</body>
</html>

5、元素节点ELEMENT

nodeName访问元素的标签名
tagName访问元素的标签名
createElement()创建节点
appendChild()末尾添加节点,并返回新增节点
insertBefore()参照节点之前插入节点,两个参数:要插入的节点和参照节点
insertAfter()参照节点之后插入节点,两个参数:要插入的节点和参照节点
replaceChild()替换节点,两个参数:要插入的节点和要替换的节点(被移除)
removeChild()移除节点
cloneNode()克隆,一个布尔值参数,true为深拷贝,false为浅拷贝
importNode()从文档中复制一个节点,两个参数:要复制的节点和布尔值(是否复制子节点)
insertAdjacentHTML()

插入文本,两个参数:插入的位置和要插入文本

  • "beforebegin",在该元素前插入
  • "afterbegin",在该元素第一个子元素前插入
  • "beforeend",在该元素最后一个子元素后面插入
  • "afterend",在该元素后插入

6、属性节点attributes

attributes

获取所有标签属性
getAttribute()获取指定标签属性
setAttribute()设置指定标签属
removeAttribute()移除指定标签属

var s = document.createAttribute("age")

s.nodeValue = "18"

创建age属性

设置属性值为18

 

7、文本节点TEXT

innerText所有的纯文本内容,包括子标签中的文本
outerText与innerText类似
innerHTML所有子节点(包括元素、注释和文本节点)
outerHTML返回自身节点与所有子节点
textContent与innerText类似,返回的内容带样式
data文本内容
length文本长度
createTextNode()创建文本
normalize()删除文本与文本之间的空白
splitText()分割
appendData()追加
deleteData(offset,count)从offset指定的位置开始删除count个字符
insertData(offset,text)在offset指定的位置插入text
replaceData(offset,count,text)替换,从offset开始到offscount处的文本被text替换
substringData(offset,count)提取从ffset开始到offscount处的文本

8、文档节点 Document

document.documentElement代表页面中的<html>元素
document.body代表页面中的<body>元素
document.doctype代表<!DOCTYPE>标签
document.head代表页面中的<head>元素
document.title代表<title>元素的文本,可修改
document.URL当前页面的URL地址
document.domain当前页面的域名
document.charset当前页面使用的字符集
document.defaultView返回当前 document对象所关联的 window 对象,没有返回 null
document.anchors文档中所有带name属性的<a>元素
document.links文档中所有带href属性的<a>元素
document.forms文档中所有的<form>元素
document.images文档中所有的<img>元素
document.readyState两个值:loading(正在加载文档)、complete(已经加载完文档)
document.compatMode

两个值:BackCompat:标准兼容模式关闭、CSS1Compat:标准兼容模式开启

write()、writeln()、

open()、close()

write()文本原样输出到屏幕、writeln()输出后加换行符、

open()清空内容并打开新文档、close()关闭当前文档,下次写是新文档

9、位置操作方法

document.documentElement.offsetHeight

文档总高度

document.documentElement.clientHeight

文档占当前屏幕高度

document.documentElement.clientWidth

文档占当前屏幕宽度

offsetHeight

自身高度(height + padding + border)

scrollHeight

文档高度(height + padding)

offsetTop

距离上级标签定位高度(magin)

clientTop

border高度(border)

offsetParent

父级定位标签,元素

scrollTop

滚动高度

六、详细操作

1、内容

innerText   文本
outerText
innerHTML   HTML内容
innerHTML  
value       值

2、属性

attributes                // 获取所有标签属性
setAttribute(key,value)   // 设置标签属性
getAttribute(key)         // 获取指定标签属性
 
/*
var atr = document.createAttribute("class");
atr.nodeValue="democlass";
document.getElementById('n1').setAttributeNode(atr);
*/

正反先示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<button onclick="selectAll()">全选</button>
<button onclick="Cancel()">取消</button>
<button onclick="reverse()">反选</button>
<hr>
<table border="1px" >
    <tr>
        <td><input type="checkbox"></td>
        <td>111</td>
        <td>111</td>
        <td>111</td>
    </tr>
        <tr>
        <td><input type="checkbox"></td>
        <td>222</td>
        <td>222</td>
        <td>222</td>
    </tr>
     <tr>

        <td><input type="checkbox"></td>
        <td>333</td>
        <td>333</td>
        <td>333</td>

    </tr>
</table>

<script>
    function selectAll() {

        var inputs=document.getElementsByTagName("input");

        for (var i=0;i<inputs.length;i++){
            var input=inputs[i]
            input.checked=true;
        }

    }

    function Cancel() {
         var inputs=document.getElementsByTagName("input");

        for (var i=0;i<inputs.length;i++){
            var input=inputs[i]
            input.checked=false;
        }

    }


    function reverse() {
        var inputs=document.getElementsByTagName("input");

        for (var i=0;i<inputs.length;i++){
            var input=inputs[i];
             input.checked=!input.checked;

//            if(input.checked){
//                input.checked=false
//            }else {
//                input.checked=true
//            }

        }
    }
</script>

</body>
</html>

3、class操作

className                // 获取所有类名
classList.remove(cls)    // 删除指定类
classList.add(cls)       // 添加类

4、标签操作

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .div1,.div2,.div3,.div4{
            width: 300px;
            height: 100px;
        }
        .div1{
            background-color: green;
        }
         .div2{
            background-color: yellow;
        }
         .div3{
            background-color: rebeccapurple;
        }
         .div4{
            background-color: deeppink;
        }
    </style>
</head>
<body>

<div class="div1">
    <button onclick="add()">add</button>
    hello div1
</div>
<div class="div2">
    <button onclick="del()">del</button>
    hello div2
</div>
<div class="div3">
    <button onclick="change()">change</button>
    <p>hello div3</p>
</div>
<div class="div4">hello div4</div>


<script>
    function change() {
        var img=document.createElement("img");//<img src="">
        //img.setAttribute("src","meinv.jpg");
        img.src="meinv.jpg";

        var ele=document.getElementsByTagName("p")[0];
        var father=document.getElementsByClassName("div3")[0];

        father.replaceChild(img,ele)


    }
    function add() {
        var ele=document.createElement("p");//<p></p>
        ele.innerHTML="<h1>hello p</h1>";
        //ele.innerText="<h1>hello p</h1>";
        ele.style.color="red";
        ele.style.fontSize="10px";
        var father=document.getElementsByClassName("div1")[0];
        father.appendChild(ele)

    }

    function del() {
        var father=document.getElementsByClassName("div1")[0];
        var son=father.getElementsByTagName("p")[0];
        father.removeChild(son)

    }


</script>
</body>
</html>

5、样式操作

var obj = document.getElementById('i1')
 
obj.style.fontSize = "32px";
obj.style.backgroundColor = "red";
<input onfocus="Focus(this);" onblur="Blur(this);" id="search" value="请输入关键字" style="color: gray;" />

    <script>
        function Focus(ths){
            ths.style.color = "black";
            if(ths.value == '请输入关键字' || ths.value.trim() == ""){

                ths.value = "";
            }
        }

        function Blur(ths){
            if(ths.value.trim() == ""){
                ths.value = '请输入关键字';
                ths.style.color = 'gray';
            }else{
                ths.style.color = "black";
            }
        }
    </script>

6、位置操作

总文档高度
document.documentElement.offsetHeight
  
当前文档占屏幕高度
document.documentElement.clientHeight
  
自身高度
tag.offsetHeight
  
距离上级定位高度
tag.offsetTop
  
父定位标签
tag.offsetParent
  
滚动高度
tag.scrollTop
 
/*
    clientHeight -> 可见区域:height + padding
    clientTop    -> border高度
    offsetHeight -> 可见区域:height + padding + border
    offsetTop    -> 上级定位标签的高度
    scrollHeight -> 全文高:height + padding
    scrollTop    -> 滚动高度
    特别的:
        document.documentElement代指文档根节点
*/

7、提交表单

document.geElementById('form').submit()

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<form action="" id="form1">
    <input type="text" name="username">
    <input type="submit" value="提交">
</form>


<script>
    var ele=document.getElementById("form1");
    ele.onsubmit=function (e) {
//        console.log("hello")
        alert(1234);

         //return false
        //e.preventDefault()
    }
</script>

</body>
</html>

8、定时器

setInterval多次定时器(毫秒计时)
clearInterval清除多次定时器
setTimeout单次定时器
clearTimeout清除单次定时器
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>


<script>
    function f() {
        console.log("hello...")
    }
    var c=setTimeout(f,1000);
//    clearTimeout(c)
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        #id1{
            width: 200px;
            height: 50px;
        }
    </style>
</head>
<body>

<input type="text" id="id1" onclick="begin()">
<button onclick="end()">停止</button>


<script>

    function showTime() {
             var current_time=new Date().toLocaleString();
             var ele=document.getElementById("id1")
             ele.value=current_time
    }
    var clock1;
    function begin() {
        if(clock1==undefined){
            showTime();
           clock1=setInterval(showTime,1000)
        }

    }

    function end() {
        clearInterval(clock1);
        clock1=undefined
    }


</script>
</body>
</html>

9、弹出框

alert()弹出框
confirm()

确认框

返回值:true、false

prompt()

输入框

两个参数:提示的文本和输入的默认值,返回值:输入的值、""、null

10、location

location.href

location.href = "url"

获取URL

重定向

location.assign()

重定向到URL

location.search = "wd=suoning"

修改查询字符串(百度搜索)

location.hostname

服务主机名,例:www.cnblogs.com

location.pathname

路径,例:suoning

location.port

端口号

location.reload()

重新加载
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<button onclick="f()">click</button>

<script>
    function f() {
         //location.reload()
        //location.assign("http://www.baidu.com")
        location.replace("http://www.baidu.com")
    }



</script>
</body>
</html>

 

11、其它(history)

navigator包含有关浏览器的信息
screen包含有关客户端显示屏幕的信息
history包含用户(在浏览器窗口中)访问过的 URL
window.print();

显示打印对话框

//后退一页
history.go(-1)
//前进一页
history.go(1);
//前进两页
history.go(2);
//无参数时,刷新当前页面
history.go()

//后退一页
history.back()
//前进一页
history.forward()

 

七、事件

1、注册 事件

首先了解下面的意思:

事件:比如有一个“按钮”,当你点击的时候发生什么,双击的时候发生什么,这个就叫做事件!

注册:首先这个按钮,当你点击的时候发生的动作,上面的事件要使他出现我们想要的效果,首先得把事件和函数进行绑定,然后把他们注册到指定标签上。

常用事件:

  • onclick  
  • onblur
  • onfocus
  • ..................

举例代码如下:

写一个p的标签,首先把事件和函数进行绑定,当你一点这个按钮的时候就会自动执行,绑定的函数:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<div class="v1">
    <div class="v2">dddd</div>
    <div class="v2">dddd</div>
    <div class="v2">dddd</div>
    <div class="v2">dddd</div>
    <div class="v2">dddd</div>
    <p id="p1" onclick="func(this)">pppppp</p>
</div>

<script>
//function func(that) {
//    console.log(that)
//
//    console.log(that.previousElementSibling);
//    console.log(that.parentNode);
//
//}
    
//    var ele=document.getElementById("p1");
//    ele.onclick=function () {
//        alert(123)
//    };

// 事件绑定2
    var ele2=document.getElementsByClassName("v2");


    for(var i=0;i<ele2.length;i++){
        ele2[i].onclick=function () {
            alert(555)
        }
    }
    
</script>
</body>
</html>

2、事件列表

属性
此事件什么时候发生(什么时候被触发
onabort    图象的加载被中断
onblur    元素失去焦点
onchange   区域的内容被修改
onclick当用户点击某个对象时调用的事件句柄(比点击p标签时执行上面的代码例子)
ondblclick当用户双击某个对象时调用的事件句柄
onerror  在加载文档或图像时发生错误
onfocus元素获得焦点
onkeydown某个键盘按键被按下
onkeypress某个键盘按键被按下并松开
onkeyup某个键盘被松开
onload一张页面或一副图片完成加载
onmousedown鼠标按钮被按下 
onmousemove鼠标移动过来后
onmouseout鼠标从某个元素移开
onmouseover鼠标移动到某个元素之上
onmouseup鼠标按键被松开
onreset  重置按钮被点击
onresize 窗口或框架被重新调整大小
onselect 文本被选中
onsubmit 确认按钮被点击
onunload 用户退出页面

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

对于事件需要注意的要点:

  • this
  • event
  • 事件链以及跳出

this标签当前正在操作的标签,event封装了当前事件的内容。

实例:

1、跑马灯

<!DOCTYPE html>
<html>
    <head>
        <meta charset='utf-8' >
        <title>欢迎blue shit莅临指导&nbsp;&nbsp;</title>
        <script type='text/javascript'>
            function Go(){
                var content = document.title;//获取title的内容
                console.log(content)
                var firstChar = content.charAt(0)//获取content第一个元素
                console.log(firstChar)
                var sub = content.substring(1,content.length)//获取content字符串剩余的元素
                console.log(sub)
                document.title = sub + firstChar;
            }
            setInterval('Go()',1000);
        </script>
    </head>
    <body>    
    </body>
</html>

2、window对象的方法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>


<script>
    // window对象的方法
    //alert
    window.alert("hello")
    //confirm
    var ret=window.confirm("hello Yuan");
    console.log(ret)//返回布尔值
    // prompt
    var ret2=window.prompt("hello....")
    console.log(ret2)//接收用户输入的内容


    // open("http://www.baidu.com")

    setInterval(f,1000);

    function f(){
             console.log(666)
    }
</script>
</body>
</html>

3、属性查找

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<div class="div1">
    <p name="littleP" class="p1">hello p</p>
    <div class="div2">hello div
         <div>div3</div>
         <a href="">click</a>
    </div>
     <span>span</span>
</div>
<span>spanspanspanspan</span>
<div>hhhhh</div>

<script>
//    var ele=document.getElementById()
   var ele=document.getElementsByClassName("p1")[0];

//    console.log(ele)
//    console.log(ele.nodeName);
//    console.log(ele.nodeType);
//    console.log(ele.nodeValue);
//    console.log(ele.innerHTML);
//    ele.innerHTML="hello world"

//    var p_ele=ele.parentNode;
//    console.log(p_ele.nodeName)
//     var b_ele=ele.nextSibling;
//    console.log(b_ele.nodeName);// 为文体节点#text

//     var b_ele2=ele.nextElementSibling;
//    console.log(b_ele2.nodeName);
//    console.log(b_ele2.innerHTML)

//    var ele3=document.getElementsByClassName("div1")[0];
//    console.log(ele3.children[1].children)

    // eg:
//     var ele4=document.getElementsByName("littleP")[0]
//    var ele5=ele4.nextElementSibling;
//    console.log(ele5.innerHTML);
//    console.log(ele5.innerText);
//
//    ele5.innerHTML="<h1>YUAN</h1>";

    //局部查找
     var ele6=document.getElementsByClassName("div1")[0];
     var ele7=ele6.getElementsByTagName("span");
    console.log(ele7[0].innerHTML)
</script>

</body>
</html>

4、模态对话模框

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .content{
            height: 1800px;
            background-color: white;
        }

        .shade{
            position: fixed;
            top:0;
            left: 0;
            right: 0;
            bottom: 0;
            background-color: gray;
            opacity: 0.7;
        }

        .model{
            width: 200px;
            height: 200px;
            background-color: bisque;
            position: absolute;
            top:50%;
            left: 50%;
            margin-top: -100px;
            margin-left: -100px;

        }
        .hide{
            display: none;
        }
    </style>
</head>
<body>

<div class="content">
    <button onclick="show()">show</button>
    hellohellohellohellohellohellohellohellohellohellohellohello
</div>

<div class="shade hide"></div>

<div class="model hide">
    <button onclick="cancel()">cancel</button>
</div>


<script>
    function show() {
        var ele_shade=document.getElementsByClassName("shade")[0];
        var ele_model=document.getElementsByClassName("model")[0];

        ele_model.classList.remove("hide");
        ele_shade.classList.remove("hide");

    }

    function cancel(){
        var ele_shade=document.getElementsByClassName("shade")[0];
        var ele_model=document.getElementsByClassName("model")[0];

        ele_model.classList.add("hide");
        ele_shade.classList.add("hide");
    }
</script>
</body>
</html>

5、onload 和其他的不太一样,他是写在Javascirpt里的,当js放在head里面就很有用了

    <script>
//        这里的onload是,当整个页面加载完成之后才执行的,整个页面包含的元素加载完成之后才执行的.
        window.onload = function () {
            alert("The page Load complete")
        };
        function edit() {
            var i = document.getElementById('id_1');
            i.className = 'color_red';
        }
        function rollback() {
            var i = document.getElementById('id_1');
            i.className = ''; //这里只要给他设置为空即可
        }
    </script>

6、事件传播

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .outer{
            width: 300px;
            height: 300px;
            background-color: antiquewhite;
        }
        .inner{
            width: 100px;
            height: 100px;
            background-color: rebeccapurple;
        }
    </style>
</head>
<body>

<div class="outer" onclick="func2()">
    <div class="inner"></div>
</div>


<script>

    var ele=document.getElementsByClassName("inner")[0];
    ele.onclick= function (e) {
        alert("I am inner!");

        e.stopPropagation()//事件停止向外传播
    };


    function func2() {
        alert("I am outer!")
    }
</script>
</body>
</html>

7、二级联动

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<select id="provinces">
    <option value="">请选择省份</option>
    <!--<option value="">河北省</option>-->
    <!--<option value="">河南省</option>-->
    <!--<option value="">北京</option>-->
</select>

<select name="" id="citys">
    <option value="">请选择城市</option>
</select>



<script>

//    a={name:"alex"};
//    b={"name":"alex"};
//    console.log(a.name);
//    console.log(b["name"]);

//      data={"河北省":["石家庄","廊坊"],"山西":["晋城","大同"],"陕西":["西安","延安"]};
//    console.log(data);
//    console.log(typeof data);
//    console.log(data["河北省"]);
//    console.log(data.河北省);
//
//      for (var i in data){
//          console.log(i);
//      }


    data={"河北省":["石家庄","廊坊"],"山西":["晋城","大同"],"陕西":["西安","延安"]};
    var pro_ele=document.getElementById("provinces");
    var city_ele=document.getElementById("citys")

    for(var i in data){
        var ele=document.createElement("option");
        ele.innerHTML=i;
        pro_ele.appendChild(ele)
    }

    pro_ele.onchange=function () {
        console.log(this.selectedIndex);
        console.log(this.options[this.selectedIndex])

        var citys=data[this.options[this.selectedIndex].innerHTML];

        city_ele.options.length=1;

        for(var i=0;i<citys.length;i++){
            var ele=document.createElement("option");
             ele.innerHTML=citys[i];
            city_ele.appendChild(ele)
        }

    }



</script>


</body>
</html>

8、输入框

<!DOCTYPE html>
<html>
    <head>
        <meta charset='utf-8' />
        <title></title>

        <style>
            .gray{
                color:gray;
            }
            .black{
                color:black;
            }
        </style>
    </head>
    <body>
        <!--input标签内注注册了两个事件(onfocus/onblur并且事件已经绑定了函数)-->
        <input type='text' class='gray' id='tip' value='请输入关键字' onfocus='Enter();'  onblur='Leave();'/>
        <script type="text/javascript">
            function Enter(){ //函数Enter的作用,当元素获得焦点就把里面的值设置为空并把颜色设置为黑色
               var id= document.getElementById("tip"); //找到id为tip的标签并赋值给id
               id.className = 'black'; //给id的class设置为black
               if(id.value=='请输入关键字'||id.value.trim()==''){
                    id.value = ''
               } //判断找到的标签的value='请输入关键里'或者你输入的内容为空
            }
            function Leave(){ //函数Leave的作用,当元素失去焦点就把里面的值设置为"请输入关键字"并把颜色设置为灰色
                var id= document.getElementById("tip"); //找到id为tip的标签病赋值为id
                var val = id.value; //吧id的value属性赋值为val
                if(val.length==0||id.value.trim()==''){
                    id.value = '请输入关键字';
                    id.className = 'gray';
                }else{
                    id.className = 'black';
                } //判断如果val的长度为0,或者用户输入为空字符,吧id的value设置为"请输入关键字"
                  //否则吧id.class设置为black
            }
        </script>
    </body>
</html>

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值