• 【JavaScript学习】DOM文档对象模型


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

      一个web页面的展示,是由html标签组合成的一个页面,dom对象实际就是将html标签转换成了一个文档对象。可以通过dom对象中js提供的方法,找到html的各个标签。找到标签后就可以操作标签使页面动起来,让页面动起来。

    一、获取标签

    复制代码
     1 // 直接获取标签
     2 document.getElementById('i1');        // 获取id为i1的标签
     3 document.getElementsByTagName('div'); // 根据标签名称获得标签数组
     4 document.getElementsByClassName('c1');// 根据class属性获取标签的数组
     5 document.getElementsByName('dsx');    // 根据name属性获取标签数组
     6 
     7 // 间接获取标签
     8 var demo = document.getElementById('inner1');  //通过id定位
     9 demo.children[1]; //拿到demo下的所有子元素,返回的是一个数组,根据下标来定位是哪个子元素
    10 demo.children[1].value = '大师兄';//给这个子元素赋值
    11 demo.firstElementChild;          //获取demo下第一个子元素
    12 demo.lastElementChild ;          //获取demo下最后一个子元素
    13 demo.parentElement();            //找到demo的上一层标签
    14 demo.parentElement.nextElementSibling;//找到demo上一层标签的下一个兄弟标签
    15 //找到demo上一层标签的下一个兄弟标签的第三个子元素的第二个子元素
    16 demo.parentElement.nextElementSibling.children[2].children[1];
    17 demo.parentElement.previousElementSibling;//找到demo上一层标签的上一个兄弟标签
    18 document.getElementsByClassName('pg-body')[0];//根据class获取标签,返回的是一个数组
    复制代码

    二、操作标签

    1、文本内容操作

    复制代码
     1 // innerHTML与innerText
     2 demo.innerText; // 获取标签中的文本内容
     3 demo.innerText = '文本框'; // 修改标签中的文本内容
     4 demo.innerHTML; // 获取标签中的所有内容,包含html代码
     5 demo.innerHTML = '<a href="http://www.imdsx.cn">大师兄</a>';// innerHTML可以将含有HTML代码的字符串变为标签
     6 
     7 // input、textarea标签
     8 demo.value;         //获取input、textarea参数
     9 demo.value = 'xx';  // 对input、textarea的内容进行赋值
    10         
    11 //select标签
    12 demo.value; //获取select标签的value参数
    13 demo.value = '选项'; // 修改select选项
    14 demo.selectedIndex; // 获取select标签的选项下标
    15 demo.selectedIndex = 1; // 通过下标更改select的选项
    复制代码

    2、操作样式

    复制代码
     1 var demo = document.getElementById('clst');
     2 demo.className = 'inner tmp1'; //更改标签class属性
     3 demo.classList;                //获取样式数组
     4 demo.classList.add('tmp1');    //添加样式
     5 demo.classList.remove('tmp2'); //删除样式
     6 var demo = document.getElementById('on');
     7 demo.checked=true;  //勾上复选框
     8 demo.checked=false; //去掉勾选
     9 
    10 //操作单独样式
    11 style.xxx;  //操作样式的粒度更加细化,操作单个样式属性,相当于在标签中增加一个style属性
    12 demo.style.backgroundColor = 'red';  // 更改标签的backgroundColor属性
    13 demo.style.display = '';  // 更改标签的display属性
    14 // 在css中样式可以通过【-】进行连接,在JavaScript中,所有的【-】都被去掉,【-】后面的第一个字符大写
    复制代码

    3、操作属性

    1 var demo = document.getElementById('r1');
    2 demo.setAttribute('name','username');//设置属性,在标签中添加属性或自定义属性
    3 demo.removeAttribute('name');//删除属性,在标签中删除指定属性
    4 attributes;//获取标签的所有属性

    4、创建标签

    复制代码
     1 //对象方式创建标签
     2 var input = document.createElement('input');
     3 input.style.height='100px';
     4 input.style.width='100px';
     5 input.setAttribute('name','username');
     6 input.setAttribute('type','text');
     7 input.setAttribute('class','inner');
     8 input.setAttribute('value','testing');
     9 //在父级标签内添加一个子标签对象,c为父级标签,input为子标签
    10 var c = document.getElementById('create');
    11 c.appendChild(input);
    12 
    13 //字符串方式创建标签
    14 var d = document.getElementById('create');
    15 d.insertAdjacentHTML('beforeBegin','<input type="text" value="testing" style="height: 100px;  100px;">');
    16 beforeBegin //插入到获取到标签的前面
    17 afterBegin  //插入到获取到标签的子标签的前面
    18 beforeEnd   //插入到获取到标签的子标签的后面
    19 afterEnd    //插入到获取到标签的后面
    复制代码

    三、绑定事件

    1、直接绑定

    直接在标签中绑定事件

    复制代码
    1 直接绑定
    2 <input type="button" value="提交" style="float:left;margin-top: 16px" ondblclick="showValueD();">
    3 //this代指当前这个操作的标签
    4 <input type="button" value="提交" style="float:left;margin-top: 16px" ondblclick="showValueD(this);">
    5 // function接收this,通过查找父级,兄弟,子级来定位操作的元素
    6 function showValueD(ths) {
    7     alert(ths.previousElementSibling.value);
    8 }
    复制代码

    2、间接绑定

    通过JavaScript获取到需要绑定事件的标签,obj.onclick=function(){} 绑定事件

    复制代码
     1 间接绑定
     2 var obj = document.getElementById('onmouse');
     3 obj.onmouseover = function () {
     4     obj.style.background = 'red';
     5 };
     6  
     7 // 间接绑定的this代指,getElementById找到的这个标签
     8 var obj = document.getElementById('onmouse');
     9 obj.onmouseout = function () {
    10     this.style.background = '';
    11 }
    12  
    13 //装逼绑定 支持同一个操作执行不同的两段代码
    14 var obj = document.getElementById('onmouse');
    15 obj.addEventListener('click', function () {
    16     console.log(111)
    17 }, false)
    18  
    19 onfocus() //获取光标时做操作
    20 onblur() //失去焦点做操作
    21 onclick() //单击时做操作
    22 ondblclick() //双击时操作
    23 onmouseover() //鼠标悬浮触发操作
    24 onmouseout() //鼠标离开悬浮时触发操作
    复制代码

    四、其他操作

    复制代码
    1 console.log(msg) //打印数据
    2 alert() //弹框提示
    3 confirm() //确认弹框,返回true or false
    4 location.href //获取当前的url 
    5 location.href = 'http://www.imdsx.cn' //重定向 
    6 location.reload() //刷新
    7 location.href = location.href //刷新
    作者:gtea 博客地址:https://www.cnblogs.com/gtea
  • 相关阅读:
    SQL Azure (17) SQL Azure V12
    Microsoft Azure News(5) Azure新DV2系列虚拟机上线
    Azure Redis Cache (3) 在Windows 环境下使用Redis Benchmark
    Azure PowerShell (11) 使用自定义虚拟机镜像模板,创建Azure虚拟机并绑定公网IP(VIP)和内网IP(DIP)
    Windows Azure Virtual Machine (31) 迁移Azure虚拟机
    Windows Azure Web Site (16) Azure Web Site HTTPS
    Azure China (12) 域名备案问题
    一分钟快速入门openstack
    管理员必备的Linux系统监控工具
    Keepalived+Nginx实现高可用和双主节点负载均衡
  • 原文地址:https://www.cnblogs.com/gtea/p/12715724.html
Copyright © 2020-2023  润新知