js操作节点的DOM方法

JavaScript013

js操作节点的DOM方法,第1张

js操作节点的DOM方法

一、创建节点

createElement

createTextNode

二、添加、删除、替换、克隆元素

1、appendChild

2、insertBefore

3、如果appendChild、insertBefore追加的是已经存在的子元素,实际上就会将子元素位置移动

4、删除节点removeremoveChild

remove()

removeChild

5.替换节点

replaceChild

6、克隆节点

cloneNode()

三、操作元素属性的方法

1.获取属性 元素.属性名

2.设置属性 元素.属性名 = 属性值

1、2方法只能获取和设置元素自带的属性

3.操作属性的万能方法

getAttribute()

setAttribute()

function deepClone(data) {

      const type = this.judgeType(data)

      let obj

      if (type === 'array') {

        obj = []

      } else if (type === 'object') {

        obj = {}

      } else {

    // 不再具有下一层次

        return data

      }

      if (type === 'array') {

        // eslint-disable-next-line

        for (let i = 0, len = data.lengthi <leni++) {

          obj.push(this.deepClone(data[i]))

        }

      } else if (type === 'object') {

        // 对原型上的方法也拷贝了....

        // eslint-disable-next-line

        for (const key in data) {

          obj[key] = this.deepClone(data[key])

        }

      }

      return obj

    }

function  judgeType(obj) {

  // tostring会返回对应不同的标签的构造函数

      const toString = Object.prototype.toString

      const map = {

        '[object Boolean]': 'boolean',

        '[object Number]': 'number',

        '[object String]': 'string',

        '[object Function]': 'function',

        '[object Array]': 'array',

        '[object Date]': 'date',

        '[object RegExp]': 'regExp',

        '[object Undefined]': 'undefined',

        '[object Null]': 'null',

        '[object Object]': 'object',

      }

      if (obj instanceof Element) {

        return 'element'

      }

      return map[toString.call(obj)]

    }