zoukankan      html  css  js  c++  java
  • HTML学习之==>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 //刷新
  • 相关阅读:
    HDU 5791 Two (DP)
    POJ 1088 滑雪 (DPor记忆化搜索)
    LightOJ 1011
    POJ 1787 Charlie's Change (多重背包 带结果组成)
    HDU 5550 Game Rooms (ccpc2015 K)(dp)
    HDU 5542 The Battle of Chibi (ccpc 南阳 C)(DP 树状数组 离散化)
    HDU 5543 Pick The Sticks (01背包)
    HDU 5546 Ancient Go (ccpc2015南阳G)
    NB-IoT的DRX、eDRX、PSM三个模式 (转载,描述的简单易懂)
    MQTT 嵌入式端通讯协议解析(转)
  • 原文地址:https://www.cnblogs.com/L-Test/p/9308072.html
Copyright © 2011-2022 走看看