js----DOM对象

DOM:

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

 查找元素:

查找元素

1、直接查找

document.getElementById             根据ID获取一个标签
document.getElementsByName          根据name属性获取标签集合
document.getElementsByClassName     根据class属性获取标签集合
document.getElementsByTagName       根据标签名获取标签集合
document.querySelector('[data-role="month"') 自定义属性

2、间接查找

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

 操作:

操作

操作内容

innerText   文本
innerHTML   HTML内容
value       值

操作属性

attributes                // 获取所有标签属性
setAttribute(name,value)   // 设置标签属性
getAttribute(key)         // 获取指定标签属性
removeAttrubute("属性名") //删除便签属性

var ele = document.getElementsByClassName('c1')[0];
ele.id='d2';//修改id        //修改属性或者赋值
ele.id //获取属性(t.className)

操作class

className                // 获取所有类名,也可以设置类名
classList.remove(cls)    // 删除指定类
classList.add(cls)       // 添加类


var ele = document.getElementsByClassName('c1')[0];
ele.classList.add('hide');        // 隐藏
ele.classList.remove("hide") // 显示

操作标签

创建标签

// 方式一
var tag = document.createElement('a')
tag.innerText = "xiaoming"
tag.className = "c1"
tag.href = "http://www.cnblogs.com/yanxiaoge"
 
// 方式二
var tag = "<a class='c1' href='http://www.cnblogs.com/yanxiaoge'>xiaoming</a>"

操作标签

// 方式一
var obj = "<input type='text' />";
xxx.insertAdjacentHTML("beforeEnd",obj);
xxx.insertAdjacentElement('afterBegin',document.createElement('p'))
 
//注意:第一个参数只能是'beforeBegin'、 'afterBegin'、 'beforeEnd'、 'afterEnd'
 
// 方式二
var tag = document.createElement('a')
xxx.appendChild(tag)                  
xxx.insertBefore(tag,xxx[1])

removeChild():         获得要删除的元素,通过父元素调用删除         删除节点
somenode.replaceChild(newnode, 某个节点);              替换节点

操作css

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代指文档根节点
*/

 

操作表单

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

 

 

表格示例(取消,全选,反选)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>表格示例</title>
</head>
<body>
<button class="select">全选</button>
<button class="reserve">反选</button>
<button class="cancel">取消</button>
<table border="1">
    <tr>
        <td><input type="checkbox" class="check"></td>
        <td>111</td>
        <td>222</td>
        <td>333</td>
    </tr>
     <tr>
        <td><input type="checkbox" class="check"></td>
        <td>111</td>
        <td>222</td>
         <td>333</td>
    </tr>
     <tr>
        <td><input type="checkbox" class="check"></td>
        <td>111</td>
        <td>222</td>
         <td>333</td>
    </tr>
     <tr>
        <td><input type="checkbox" class="check"></td>
        <td>111</td>
        <td>222</td>
        <td>333</td>
    </tr>
</table>
<script>
//    方式一:分别给每个button增加事件
//     var ele_select = document.getElementsByClassName('select')[0];
//     var ele_reserve = document.getElementsByClassName('reserve')[0];
//     var ele_cancel = document.getElementsByClassName('cancel')[0];
//     var ele_input = document.getElementsByClassName('check');
    //全选
    // ele_select.onclick = function () {
    //     for (var i = 0; i < ele_input.length; i++) {
    //         ele_input[i].checked = 'checked'
    //     }
    // };
    // //取消
    // ele_cancel.onclick = function () {
    //      for (var i =0;i<ele_input.length;i++){
    //         //删除checked属性,直接设置为空就行了
    //         ele_input[i].checked = ''
    //     }
    // };
    // //反选
    // ele_reserve.onclick = function () {
    //     for (var i = 0; i < ele_input.length; i++) {
    //         var ele = ele_input[i];
    //         if (ele.checked) {//如果选中了就设置checked为空
    //             ele.checked = '';
    //         }
    //         else {//如果没有就设置checked = checked
    //             ele.checked = 'checked';
    //         }
    //      }
    // };

    //方式二:方式一的优化循环增加事件
   var ele_button = document.getElementsByTagName('button');
   var ele_input = document.getElementsByClassName('check');
   for(var i=0;i<ele_button.length;i++) {
       ele_button[i].onclick = function () {
           if (this.innerHTML == '全选') {
               for (var i = 0; i < ele_input.length; i++) {
                   //添加一个checked属性
                   ele_input[i].checked = 'checked'
               }
           }
           else if (this.innerHTML == '取消') {
               for (var i = 0; i < ele_input.length; i++) {
                   //删除checked属性,直接设置为空就行了
                   ele_input[i].checked = ''
               }
           }
           else {
               for (var i = 0; i < ele_input.length; i++) {
                   var ele = ele_input[i];
                   if (ele.checked) {//如果选中了就设置checked为空
                       ele.checked = '';
                   }
                   else {//如果没有就设置checked = checked
                       ele.checked = 'checked';
                   }
               }
           }
       }
   }
</script>
</body>
</html>
示例

模态对话框

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

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

        .hide{
            display: none;
        }

        .models{
            position: fixed;
            top: 50%;
            left: 50%;
            margin-left: -100px;
            margin-top: -100px;
            height: 200px;
            width: 200px;
            background-color: wheat;

        }
    </style>
</head>
<body>
<div class="back">
    <input class="c" type="button" value="click">
</div>

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

<div class="models hide handles">
    <input class="c" type="button" value="cancel">
</div>


<script>


    var eles=document.getElementsByClassName("c");
    var handles=document.getElementsByClassName("handles");
    for(var i=0;i<eles.length;i++){
        eles[i].onclick=function(){

            if(this.value=="click"){

                for(var j=0;j<handles.length;j++){

                    handles[j].classList.remove("hide");

                 }

            }
            else {
                for(var j=0;j<handles.length;j++){

                    handles[j].classList.add("hide");
                }

            }
        }
    }

</script>

</body>
</html>

模态对话框

示例

  

 

posted @ 2019-03-10 19:07  小名的同学  阅读(197)  评论(0编辑  收藏  举报