dom操作的一般流程

主要三板斧

  • 页面元素的操作 添加节点(动态生成列表),删除节点
  • 页面元素属性的操作 改变style 、或者直接改变class 实现不同页面效果,改变图片的路径src 链接的地址herf 内容innerHTML 、innerText,
  • 页面元素事件的处理 鼠标 点击、移动、经过、离开等,键盘:输入的字符、按下、松开等

一般流程

  1. 得到节点 查
  2. 给节点绑定事件 事件
  3. 处理程序。里面可以是 插入新节点,删除某个节点(自己或者其他),修改节点的一些东西(自己或者其他)

插入新节点

  1. 创建节点,var new=document.createElemnet('tagName')
  2. 给新节点加入内容 new.innerHTML='想放的东西' 或者new.nodeValue='想放的东西'
  3. 把节点放到对应位置,父节点.appendChild(new) 父节点. insertBefore(new,父节点.children[i]),在第几个的前面插入新节点
    ps:可以配合数组里面放数据对象,遍历数组得到要创建多少个大的节点,然后遍历对象的得到要创建多少个小的元素节点和对应的值

删除节点

  1. 给某个按钮绑定事件,实现删除功能
  2. 获得要删除的节点, var node=document.querySelector('xxxx')
  3. 删除节点 node的父节点.removeChild(node)

查找节点

  • 通过使用 getElementById()getElementsByTagName()getElementsByClassName()
  • querySelector()querySelectorAll()
    var buttonDatas2 = document.querySelectorAll('span[data-flag="2"]');
  • .parentNodechildren[i].previousElementSibling.nextElementSibling,分别对应父节点,子节点(多个),上一个兄弟节点,下一个兄弟节点

修改——用的最多

  1. 获得节点,可以是只获得一个节点,也可以获得节点数组的形式
    • 修改属性,srctitleherf,属性都是可读写的,我们直接赋值修改即可,例如,node.src='新的src'
    • 修改内容 ,innerHTMLinnerText 修改显示的内容 node..innerHTML='想放的东西'
    • 修改表单元素 valuetypedisable
    • 修改样式,可以直接修改 style.某个css属性 直接加一个class或者减一个class ,列如node.classList.remove('active'); node.classList.add('active');

自定义属性—以data- 开头

  • setAttribute 设置属性值
  • getAttribute 得到属性值
  • removeAttribute 移除这个属性

事件

主要就是给某个节点绑定事件,比如点击事件 onclick 鼠标经过事件 onmouseover 鼠标离开事件 onmouseout

  • 绑定方式1:节点.事件类型=function(){事件处理程序,你想干的事}
    node.onclick=function(){node.innerHTML='我变了'}
  • 绑定方式2: 节点.事件类型=solve; 不带()
    function solve(){事件处理程序,你想干的事} 这种方式默认传递了事件对象这个参数
node.onclick=change;
function change(){node.innerHTML='我变了';console.log(event);
}
  • 绑定方式3: 节点.addEventListener('事件类型',solve); 不带()
    function solve(){事件处理程序,你想干的事} 这种方式默认传递了事件对象这个参数
node.addEventListener('click',change);
function change(event){node.innerHTML='我变了';console.log(event);
}

本人更喜欢把函数单独出来,event可以简写为 evt 或 e

处理函数需要带参的办法

事件处理函数不能带参 ,定义一个传入参数的普通函数,在事件处理函数里面调用该函数,并传入参数

node.addEventListener('click',change);
function output(str){console.log(str)
}
function change(event){node.innerHTML='我变了';  //改变其他节点this.innerHTML='我变了';  //改变自己outoput('我调用输出函数了');console.log(event);output('我绑定的元素是'+event.target)
}

本文链接:https://my.lmcjl.com/post/2531.html

展开阅读全文

4 评论

留下您的评论.