当前位置: 首页 > news >正文

前端——js函数+DOM对象

一、函数

1.构建函数

  // 接受实参

    function name(t1, t2, t3, t4) {

      // code

      console.log(t1, t2, t3, t4);

    }

2.执行函数

name()

3.return

   function xxx() {

      return 'xxxx'

      console.log('return 后的代码不执行');

    }

4.箭头函数

>常常以匿名函数的身份,出现在js中。

    () => {

    }

  let x = o => '干净了,爽歪歪。'

    o => {

      return '干净了,爽歪歪。'

    }

二、DOM操作

1.DOM 获取   (选择器)

    // 单个

    console.log(

      document.querySelector('#app')

    );

    // 多个DOM

    console.log(

      document.querySelectorAll('ol li')

    );

2.事件

    let i = 0;

    document.querySelector('button').onclick = () => {

      // 事件函数

      console.log('点我干嘛?', i++);

    }

3.内容操作

    let app = document.querySelector('#app');

    // html

    app.innerHTML = ` <b>我是b</b> `

    app.innerText = ` <b>我是b</b> `

4.属性操作

pp.title = 'app';

    document.querySelector('img').src = 'https://img2.baidu.com/it/u=299663851,4260094678&fm=253&fmt=auto&app=120&f=JPEG?w=818&h=800'

5.行内样式

  app.style.fontSize = '40px'

6.操作class

1.增

   app.classList.add('box')

    app.classList.add('back')

2.删

 app.classList.remove('box')

3.切换

    document.querySelector('button').onclick = () => {

      // 事件函数

      console.log('点我干嘛?', i++);

 

      app.classList.toggle('back');

    }

4.判断

    console.log(app.classList.contains('back'));

7.创建DOM

  // 妙娃种子

    let img = document.createElement("img");

    img.src = 'https://img2.baidu.com/it/u=299663851,4260094678&fm=253&fmt=auto&app=120&f=JPEG?w=818&h=800'


 

    // 闪电耗子

    let img2 = document.createElement("img");

    img2.src = 'https://img2.baidu.com/it/u=3018400876,3718749332&fm=253&fmt=auto&app=138&f=JPEG?w=870&h=489'

8.将元素添加到DOM树中

//appendChild 方法用于将一个节点添加到父节点的子节点列表的末尾。

    // app.appendChild(img);//将img元素作为app元素的最后一个子节点添加到DOM中。

    //insertBefore 方法用于在指定的子节点之前插入一个节点(或一个新创建的节点)。

    //这个方法接受两个参数:第一个是要插入的节点,第二个是参考节点(即新节点将被插入到这个参考节点之前的位置)

    app.insertBefore(img2, document.querySelector("#hz"));//在app元素中找到ID为hz的元素之前插入img2元素。

    // app.appendChild(img2)

9.将元素从DOM树中删除

     // app.removeChild(img)

    // img2.remove();

三、封装DOM的构建

// 创建DOM函数

    function createDOM(DOMObj, root) {

      // 标签名

      let DOM = document.createElement(DOMObj.TN);

      // 属性

      // class

      for (const key in DOMObj) {

        DOM[key] = DOMObj[key]

      }

      // style 函内样式

      for (const key in DOMObj.style) {

        DOM.style[key] = DOMObj.style[key]

      }

      // 子盒子 (判断数据类型)

      if (DOMObj.TNC) {

        if (Array.isArray(DOMObj.TNC)) {

          DOMObj.TNC.forEach(element => {

            createDOM(element, DOM)

          });

        } else {

          createDOM(DOMObj.TNC, DOM)

        }

      }

      // console.log(DOM);

      // 丢入容器

      if (root) {

        root.appendChild(DOM);

      }

 

      return DOM;

    }

 

    createDOM({

      TN: 'div', innerText: '我是被宇智波厚度,构建出来的。', title: '我是被宇智波厚度,构建出来的。',

      className: 'box', style: { fontSize: '30px', border: "solid" },

      TNC: { TN: "i", innerText: "我是i标签" }

    }, document.querySelector("#app"))

      ;

 

相关文章:

  • 《 C++ 修炼全景指南:十三 》为什么你的代码不够快?全面掌控 unordered_set 和 unordered_map 的哈希性能飙升魔法
  • 基于Hive和Hadoop的白酒分析系统
  • 大模型微调方法(非常详细),收藏这一篇就够了!
  • 个人健康管理小程序(源码+参考文档+定制)
  • 【深度学习】05-RNN循环神经网络-02- RNN循环神经网络的发展历史与演化趋势/LSTM/GRU/Transformer
  • 数智算融合,大模型助力政务服务智能化转型 丨OPENAIGC开发者大赛企业组AI创作力奖
  • ansible 配置
  • VS code Jupyter notebook 导入文件目录问题
  • 实操了 AI 大模型项目落地, 程序员成功转变为 AI 大模型工程师
  • [大语言模型-论文精读] 词性对抗性攻击:文本到图像生成的实证研究
  • 基于51单片机的多通道数字电压表proteus仿真
  • map和set的使用
  • 洛谷 AT_abc365_c [ABC365C] Transportation Expenses 题解
  • boost 的lockfree 使用
  • OmniAns丨OPENAIGC开发者大赛高校组AI创作力奖
  •  D - 粉碎叛乱F - 其他起义
  • Flannel解读
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • linux安装openssl、swoole等扩展的具体步骤
  • Python3爬取英雄联盟英雄皮肤大图
  • underscore源码剖析之整体架构
  • V4L2视频输入框架概述
  • vue-cli3搭建项目
  • 分类模型——Logistics Regression
  • 类orAPI - 收藏集 - 掘金
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 删除表内多余的重复数据
  • 设计模式走一遍---观察者模式
  • 突破自己的技术思维
  • 线性表及其算法(java实现)
  • 云大使推广中的常见热门问题
  • 2017年360最后一道编程题
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • $.ajax()方法详解
  • (003)SlickEdit Unity的补全
  • (1)无线电失控保护(二)
  • (20)docke容器
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (7)svelte 教程: Props(属性)
  • (a /b)*c的值
  • (二)正点原子I.MX6ULL u-boot移植
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (五十)第 7 章 图(有向图的十字链表存储)
  • (学习日记)2024.02.29:UCOSIII第二节
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (转)程序员疫苗:代码注入
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • ../depcomp: line 571: exec: g++: not found
  • .bat批处理(二):%0 %1——给批处理脚本传递参数
  • .Net core 6.0 升8.0
  • .NET I/O 学习笔记:对文件和目录进行解压缩操作
  • .net Signalr 使用笔记