欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

js事件/dom操作/定时

程序员文章站 2022-05-21 23:22:27
...

事件属性(event在事件方法中总是可用的)

  • onclick 单击
  1. <button onclick="setBg(this)">按钮2</button>
  2. <script>
  3. function setBg(ele){
  4. document.body.style.backgroundColor='wheat';
  5. ele.style.backgroundColor="yellow";
  6. ele.textContent="保存成功";
  7. }
  8. </script>
  • onkeydown 按下键触发
  • submit 提交时触发
  • focus 获取焦点时触发
  • blur 失去焦点时触发
  • change 改变选择时触发
  • input 值发生改变触发

event

  • 事件类型
  1. event.type
  • 事件绑定者(事件主体)
  1. event.currentTarget
  • 事件触发者(目标)
  1. event.target
  • 阻止事件冒泡(冒泡:依次触发上级事件)
  1. event.stopPropagation();
  • 阻止默认行为
  1. event.preventDefault();

事件添加删除

  • .onclick = null 事件删除
  • .addEventListener(“click”,方法,是否冒泡); 添加事件侦听器
  1. //案例
  2. function show(){
  3. console.log(1);
  4. }
  5. btn2.addEventListener("click",show,false);
  • .removeEventListener(“click”,方法) 删除事件侦听器
  • .dispatchEvent(事件对象) 事件派发(触发事件)
  • new Event(‘click’) 创建一个自定义事件
  1. 先添加一个事件
  2. let i = 0;
  3. btn3.addEventListener("click",()=>{
  4. console.log(i);
  5. i += 1;
  6. },false);
  7. const myclick = new Event('click');
  8. //派发是事件(调用一次btn3的myclick)
  9. btn3.dispatchEvent(myclick);

自定义属性(data-xxx)

  • .dataset.xxx 获取自定义属性(注意:使用驼峰式获取如:data-work-unit .dataset.workUnit)
  1. //案例
  2. <button data-index="1" data-work-unit="php" onclick="getIndex(this)">btn1</button>
  3. function getIndex(btn){
  4. //获取自定义属性值
  5. console.log(btn.dataset.index);
  6. console.log(btn.dataset.workUnit);
  7. }

对象获取

  • querySelectorAll(css选择器) 一组
  1. //案例
  2. const items = document.querySelectorAll("ul > li");
  3. for(let i = 0;i<items.length;i++){
  4. items[i].style.color = "red";
  5. }
  • querySelector(css选择器) 一个
  • document.body 获取body
  • document.head 获取head
  • document.title 获取title
  • document.documentElement 获取html
  • document.forms 获取所有表单
    (每个input,button都有一个form属性 ele.form)
  1. <form id="login" >
  2. <input type="text" name="email" >
  3. </form>
  4. //login是form.id
  5. //email是input name值
  6. //获取email input 元素
  7. document.forms.login.email

DOM树节点

  • .children 获取子集元素
  • .firstElementChild 获取第一个子元素
  • .nextElementSibling 获取下一个兄弟元素
  • .previousElementSibling 获取上一个兄弟元素
  • .lastElementChild 获取最后一个元素
  • .parentElement/.parentNode 获取父节点

DOM元素增删改查

  • document.createElement(“ul”) 创建元素
  • document.body.append(ul); 添加元素到body中
  • .cloneNode(true) 克隆节点[true 为同时复制子元素]
  • .remove() 移除元素
  • .before(‘添加的元素’) 节点之前插入元素
  • .after(‘添加的元素’) 节点之后插入元素
  • .replaceChild 替换元素
  • .insertAdjacentElement(‘插入位置’,元素)
  1. 四个插入位置
  2. afterBegin :结束标签之前
  3. beforeBegin :开始标签之前
  4. afterEnd :结束标签之后
  5. beforeEnd :接收标签之前

DOM元素内容操作

  • .textContent 获取元素内容(包括style/display:none内容)
  • .innerText 获取元素内容(不包括style/display:none内容)[不解析html字符串]
  • .innerHTML 获取元素内容(包括HTML标签)[可以解析html字符串]
  • .outerHTML 获取当前节点的自身html字符串
  1. //留言板案例
  2. <!DOCTYPE html>
  3. <html lang="en">
  4. <head>
  5. <meta charset="UTF-8">
  6. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  7. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  8. <title>Document</title>
  9. </head>
  10. <body>
  11. <input type="text" placeholder="留言内容" autofocus onkeydown="addMsg(this)" >
  12. <ul class="list" ></ul>
  13. <script>
  14. function addMsg(ele){
  15. if (event.keuy === 'Enter') {
  16. //1.获取留言列表的容器
  17. const ul = document.querySelector('.list');
  18. //2.判断留言是否为空
  19. if(ele.value.length === 0){
  20. alert('留言内容不能为空');
  21. ele.focus();
  22. return false;
  23. }
  24. //3.添加一条新留言
  25. const li = document.createElement('li')
  26. li.textContent = ele.value;
  27. //添加删除留言功能
  28. li.textHTML = ele.value + "<button onclick='del()' >删除</button>"
  29. //插入
  30. // ul.append(li);
  31. ul.insertAdjacentElement('afterBegin',li);
  32. //4.清空留言的输入框,为下一次做准备
  33. ele.value = null;
  34. //5.重置焦点到留言框中,方便用户更次输入
  35. ele.focus();
  36. }
  37. }
  38. function del(ele){
  39. //删除前确认
  40. if(confirm("是否删除?")){
  41. //方案1
  42. ele.remove();
  43. //方案2
  44. // ele.outerHTML = null;
  45. }
  46. }
  47. </script>
  48. </body>
  49. </html>

css操作

  • window.getComputedStyle(元素) 获取元素所有样式属性
  • .style.css属性 行内样式 [注意:使用驼峰式]

class操作

  • .classList.add(“calss”) 添加class
  • .classList.contains(“class”) 判断有没有class
  • .classList.remove(“class”) 移除class
  • .classList.replace(‘替换原’,’替换值’) 替换class
  • .classList.toggle(“class”) 切换class

定时

  • setTimeout 定时触发
  1. setTimeout(()=>{
  2. },2000);
  • setInterval 循环触发
  1. setInterval(()=>{
  2. },2000);