DOM+Jquery

DOM(Document Object Model(文档对象模型))

HTML DOM 树

什么是DOM

DOM 是 W3C(万维网联盟)的标准呢。

DOM定义了访问HTML和XML文档的标准:"W3C文档对象模型DOM是中立于平台和语言的接口,它允许程序和脚本动态的访问和更新文档的内容、结构和样式。"

W3C DOM标准被分为3个不同的部分:

  • 核心DOM-针对任何结构化文档的标准模型
  • XML DOM-针对XML文档的标准模型
  • HTML DOM-针对HTML文档的标准模型

什么是 XML DOM?

XML DOM 定义了所有 XML 元素的对象和属性,以及访问它们的方法。

什么是 HTML DOM?

HTML DOM 是:

  • HTML 的标准对象模型
  • HTML 的标准编程接口
  • W3C 标准

HTML DOM 定义了所有 HTML 元素的对象和属性,以及访问它们的方法。

换言之,HTML DOM 是关于如何获取、修改、添加或删除 HTML 元素的标准。

DOM 节点

根据 W3C 的 HTML DOM 标准,HTML 文档中的所有内容都是节点:

  • 整个文档是一个文档节点
  • 每个 HTML 元素是元素节点
  • HTML 元素内的文本是文本节点
  • 每个 HTML 属性是属性节点
  • 注释是注释节点 

节点自身属性

  • attributes - 节点(元素)的属性节点
  • setAttribute(key,value)-设置标签属性
  • getAttribute(key)-获取标签属性
  • nodeType – 节点类型
  • nodeValue – 节点值
  • nodeName – 节点名称
  • innerHTML - 节点(元素)的文本值
  • outetHTML
  • innerText-文本
  • outerText

导航属性

  • parentNode - 节点(元素)的父节点 (推荐)
  • firstChild – 节点下第一个子元素
  • lastChild – 节点下最后一个子元素
  • childNodes - 节点(元素)的子节点 

常用导航属性

  • parentElement // 父节点标签元素
  • children // 所有子标签
  • firstElementChild // 第一个子标签元素
  • lastElementChild // 最后一个子标签元素
  • nextElementtSibling // 下一个兄弟标签元素
  • previousElementSibling // 上一个兄弟标签元素

DOM对象方法

getElementById() 返回带有指定 ID 的元素。 
getElementsByTagName() 返回包含带有指定标签名称的所有元素的节点列表(集合/节点数组)。 
getElementsByClassName() 返回包含带有指定类名的所有元素的节点列表。 
appendChild() 把新的子节点添加到指定节点。 
removeChild() 删除子节点。 
replaceChild() 替换子节点。 
insertBefore() 在指定的子节点前面插入新的子节点。 
createAttribute() 创建属性节点。 
createElement() 创建元素节点。 
createTextNode() 创建文本节点。 
getAttribute() 返回指定的属性值。 
setAttribute() 把指定属性设置或修改为指定的值。 

常用查找操作  

document.getElementById             根据ID获取一个标签
document.getElementsByName          根据name属性获取标签集合
document.getElementsByClassName     根据class属性获取标签集合
document.getElementsByTagName       根据标签名获取标签集合
直接查找
parentNode          // 父节点
childNodes          // 所有子节点
firstChild          // 第一个子节点
lastChild           // 最后一个子节点
nextSibling         // 下一个兄弟节点
previousSibling     // 上一个兄弟节点
 
parentElement           // 父节点标签元素
children                // 所有子标签
firstElementChild       // 第一个子标签元素
lastElementChild        // 最后一个子标签元素
nextElementtSibling     // 下一个兄弟标签元素
previousElementSibling  // 上一个兄弟标签元素
间接查找
className                // 获取所有类名
classList.remove(cls)    // 删除指定类
classList.add(cls)       // 添加类
class操作
var tag = document.createElement('a')
tag.innerText = "cc"
tag.className = "c1"
创建标签
var obj = document.getElementById('i1')
 
obj.style.fontSize = "32px";
obj.style.backgroundColor = "red";
样式操作
总文档高度
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代指文档根节点
*/
位置操作
console.log                // 输出框
alert                       //弹出框
confirm                    // 确认框
  
// URL和刷新
location.href               //获取URL
location.href = "url"      // 重定向
location.reload()          // 重新加载
  
// 定时器
setInterval                // 多次定时器
clearInterval               //清除多次定时器
setTimeout                //  单次定时器
clearTimeout             //   清除单次定时器
其它常用操作

Event事件

onclick        //当用户点击某个对象时调用的事件句柄。
ondblclick     //当用户双击某个对象时调用的事件句柄。

onfocus       // 元素获得焦点。      //练习:输入框
onblur        // 元素失去焦点。      应用场景:用于表单验证,用户离开某个输入框时,代表已经输入完了,我们可以对它进行验证.
onchange       //域的内容被改变。       应用场景:通常用于表单元素,当元素内容被改变时触发.(三级联动)

onkeydown     // 某个键盘按键被按下。          应用场景: 当用户在最后一个输入框按下回车按键时,表单提交.
onkeypress     //某个键盘按键被按下并松开。
onkeyup       // 某个键盘按键被松开。
onload         //一张页面或一幅图像完成加载。
onmousedown   // 鼠标按钮被按下。
onmousemove   // 鼠标被移动。
onmouseout    // 鼠标从某元素移开。
onmouseout   //鼠标从某元素标签移开,和mouseout不同
onmouseover   // 鼠标移到某元素之上。

onselect      //文本被选中。
onsubmit     // 确认按钮被点击。

注意:在JS中触发时去掉on

实例  

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

    <style>
        div{
            display: inline-block;
        }
    </style>
</head>
<body>
<div id="box1">
    <select multiple="multiple" size="10" id="left">
        <option>book</option>
        <option>book2</option>
        <option>book3</option>
        <option>book4</option>
        <option>book5</option>
        <option>book6</option>
    </select>
</div>


<div id="choice">
    <input class="add"     type="button" value="---->" onclick="add()"><br>
    <input class="remove"  type="button" value="<----" onclick="remove();"><br>
    <input class="add-all" type="button" value="====>" onclick="addall()"><br>
    <input class="remove-all" type="button" value="<====" onclick="removeall()">
</div>


<div>
    <select multiple="multiple" size="10" id="right">
        <option>book9</option>
    </select>
</div>

<script>
    var left=document.getElementById("left");
    var right=document.getElementById("right");
    function add(){
         var options=left.children;
         for (var i=0; i<options.length;i++){
             var option=options[i];
             if(option.selected==true){
                 option.selected=false;
                 right.appendChild(option);
                 i--;
             }
         }
     }
    function addall(){
         var options=left.children;
         for (var i=0; i<options.length;i++){
             var option=options[i];
             right.appendChild(option);
             i--;
         }
     }
    function remove() {
         var options=right.children;
         for (var i=0;i<options.length;i++){
            if (options[i].selected==true){
                options[i].selected=false;
                left.appendChild(options[i]);
                i--;
            }
         }
    }
    function removeall() {
        var options=right.children;
        for (var i=0;i<options.length;i++){
                left.appendChild(options[i]);
                i--;
            }


    }

</script>

</body>
</html>
select左右移
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .title-menu{
            background-color: #cccccc;
        }
        ul {
            list-style: none;/*去点*/
            padding: 0;
            margin: 0;
        }
        ul li{
            float: left;
            color: white;
            padding: 8px 8px;
            background-color: #336699;
        }
        
        .content{
            clear: both;
            border: 1px solid red;
            min-height: 100px;
        }
        .head{
            display: none;
        }
        .active{
            background-color: #e1e1e1;
            color: black;
        }
    </style>

</head>
<body>
    <div style="width: 400px; margin: 0 auto">
        <div class="title-menu">
            <div class="title">
                <ul>
                    <li target="h1" class="active" onclick="tab(this)">市场分析</li>
                    <li target="h2" onclick="tab(this)">资源统计</li>
                    <li target="h3" onclick="tab(this)">其他</li>
                </ul>
            </div>
            <div class="content">
                <div content="h1">内容1</div>
                <div content="h2" class="head">内容2</div>
                <div content="h3" class="head">内容3</div>
            </div>
        </div>

    </div>


<script>
    function tab(ths) {
        var tagt=ths.getAttribute("target");
        ths.className="active";
        var brothers=ths.parentElement.children;//获得所有兄弟
        for (var i=0;i<brothers.length;i++){
            if (ths !=brothers[i]){
                brothers[i].classList.remove("active");
            }
        }
        var contents=document.getElementsByClassName("content")[0].children;
        for (var j=0;j<contents.length;j++){
            var con=contents[j].getAttribute("content");
            if (con!=tagt){
                contents[j].classList.add("head")
            }
            else {
                contents[j].classList.remove("head")
            }
        }

    }
</script>



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

    <select id="province" onchange="func(this)">
        <option>省份</option>
    </select>
    <select id="city">
        <option>市区</option>
    </select>




<script>
    date={"北京":["昌平","海淀"], "河南":["郑州","信阳"], "河北":["邯郸","廊坊"]};

    var pro=document.getElementById("province");
    var city=document.getElementById("city");

    for (var i in date){
        var option_pro=document.createElement("option"); //<option></option>
        option_pro.innerHTML=i;////<option>省份</option>
        pro.appendChild(option_pro)
    }

    function func(self) {
        var choice=(self.options[self.selectedIndex]).innerHTML;

        city.options.length=0;


        for (var j in date[choice]){
            var option_city=document.createElement("option");
            option_city.innerHTML=date[choice][j];
            city.appendChild(option_city)

        }

    }

</script>
</body>
</html>
二级联动
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<input class="keyword" type="text" onfocus="func1()" onblur="func2()" value="请输入用户名">
<input type="text" placeholder="请输入用户名">
<script>
    function func1() {
        var ky=document.getElementsByClassName("keyword")[0];
        ky.value=""
    }

    function func2() {
        var ky=document.getElementsByClassName("keyword")[0];
        if (ky.value.trim().length==0){
            ky.value="请输入用户名"
        }
    }
</script>

</body>
</html>
搜索框
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        *{
            margin: 0;
        }
        #div1{
            position: fixed;
            width: 100%;
            height: 800px;
            background-color: #cccccc;
            z-index: 1000;

        }
        #div2{
            position: fixed;
            width: 100%;
            z-index: 1001;
            top: 0;
            left: 0;
            right: 0;
            bottom: 0;
            background-color: red;
            opacity: 0.1; /*透明度*/

        }

        #div3{
            width: 200px;
            height: 200px;
            background-color: green;
            position: absolute;
            z-index: 1002;
            top: 37%;
            left: 37%;

        }
        .public{
            display: none;
        }

    </style>
</head>
<body>
    <div id="div1">
        <input type="button" value="添加" onclick="add()">
    </div>

    <div id="div2" class="div public">
    </div>
    <div id="div3" class="div public">
        <input type="button" value="撤销" onclick="cancel()">

    </div>

<script>
    function add() {
        var ele=document.getElementsByClassName("div")
        for (var i=0;i<ele.length;i++){
            ele[i].classList.remove("public")
        }
    }

    function cancel() {
        var ele=document.getElementsByClassName("div")
        for (var i=0;i<ele.length;i++){
            ele[i].classList.add("public")
        }
    }



</script>


</body>
</html>
模态对话框
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

    <input type="button" value="全选" onclick="selectall()">
    <input type="button" value="取消" onclick="cancel()">
    <input type="button" value="反选" onclick="revoser()">
    <hr>
    <table border="1" cellspacing="0" class="tab">
        <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 ele=document.getElementsByClassName("tab")[0];
        var inputs=ele.children[0].getElementsByTagName("input");
        for (var i in inputs){
            inputs[i].checked=true;
        }
    }
    
    function cancel() {
        var ele=document.getElementsByClassName("tab")[0];
        var inputs=ele.children[0].getElementsByTagName("input");
        for (var i in inputs){
            inputs[i].checked=false;
        }
        
    }
    
    function revoser() {
        var ele=document.getElementsByClassName("tab")[0];
        var inputs=ele.children[0].getElementsByTagName("input");
        for (var i in inputs){
            if (inputs[i].checked){
                inputs[i].checked=false;
            }
            else {
                inputs[i].checked=true;
            }
        }
    }
</script>



</body>
</html>
正反选
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div id="i1" style="background-color: red;color: black;font-size: 54px;text-align: center">
        欢迎莅临指导
    </div>

    <script type="text/javascript">
        setInterval(function () {
            d1=document.getElementById("i1");
            d1_text=d1.innerText;
            first_text=d1_text[0];
            sub_text=d1_text.slice(1,d1_text.length);
            new_str=sub_text+first_text;
            d1.innerText=new_str;

        },500);

    </script>

</body>
</html>
跑马灯
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .top{
            position: fixed;
            right: 28px;
            bottom: 19px;
        }
        .hide{
            display: none;
        }
    </style>
</head>
<body onscroll="func()">

    <div style="height: 2000px;"></div>
    <div id="div" class="top hide">
        <a href="javascript:void(0);" onclick="go_top();">返回顶部</a>
    </div>

<script>
    function func() {
        var top_length=document.body.scrollTop;
        var ele=document.getElementById("div");
        if (top_length>200){

            ele.classList.remove("hide");
        }
        else {
            ele.classList.add("hide");
        }
    }

    function go_top() {
        document.body.scrollTop=0;
    }
</script>

</body>
</html>
返回顶部

jQuery

jQuery查找网址

 

http://jquery.cuishifeng.cn/  

 

 jQuery 是一个 JavaScript 库,极大的简化了JavaScript的编程。

jQuery语法

jQuery 语法是为 HTML 元素的选取编制的,可以对元素执行某些操作。

基础语法是:$(selector).action()

  • 美元符号定义 jQuery
  • 选择符(selector)“查询”和“查找” HTML 元素
  • jQuery 的 action() 执行对元素的操作

示例

  • $(this).hide() - 隐藏当前元素
  • $("p").hide() - 隐藏所有段落
  • $(".test").hide() - 隐藏所有 class="test" 的所有元素
  • $("#test").hide() - 隐藏所有 id="test" 的元素

提示:jQuery 使用的语法是 XPath 与 CSS 选择器语法的组合。在本教程接下来的章节,您将学习到更多有关选择器的语法。

 

 

posted @ 2016-12-20 14:17  Dwyane.wang  阅读(289)  评论(0编辑  收藏  举报