DOM/DOM.js

/**
 * DOM类
 *
 * @class Dom
 */
class Dom {
  constructor() {}

  /**
   * @description 打印开始点
   *
   * @memberof Dom
   */
  start() {
    console.log("DOM start^_^_^_^_^_^_^_^_^_^")
  }

  /**
   * @description 打印结束点
   *
   * @memberof Dom
   */
  end() {
    console.log("DOM end^_^_^_^_^_^_^_^_^_^")
  }

  /**
   * @decsription 数组转元素列表
   *
   * @param {Array} arr 目标数组 [元素内容]
   * @param {String} label 标签类型(p、list、div...)
   * @param {String} listID 添加到id为listID元素下
   * @memberof Dom
   * @example
   * arrayToHtmlList(['item 1', 'item 2'], 'li', 'app')  // 在id为app元素下添加两个li列表
   * arrayToHtmlList(['item 1', 'item 2'], 'p', 'app')  // 在id为app元素下添加两个p列表
   */
  arrayToHtmlList(arr, label, listID) {
    ;((el) => (
      (el = document.querySelector("#" + listID)),
      (el.innerHTML += arr
        .map((item) => `<${label}>${item}</${label}>`)
        .join(""))
    ))()
  }

  /**
   * @description 如何隐藏所有指定的元素
   * @param {HTMLElement} el
   * @return { * }
   * @memberof Dom
   * @example
   * hide(document.querySelectorAll('p'))
   */
  hide(el) {
    Array.from(el).forEach((e) => (e.style.display = "none"))
    // [...el].forEach(e => (e.style.display = 'none'));
  }

  /**
   * @description 返回指定元素的生效样式
   *
   * @param {HTMLElement} el
   * @param {String} ruleName css属性。如:font-size
   * @return {String}
   * @memberof Dom
   * @example
   * getStyle(document.querySelector('p'), 'font-size');    // 16px
   */
  getStyle(el, ruleName) {
    return getComputedStyle(el)[ruleName]
  }

  /**
   * @description 在指定元素之 前 / 后 插入新元素
   *
   * @param {HTMLElement} el 指定元素
   * @param {String} htmlString html标签
   * @param {string} [bORa='b'] 选择前后插入 b:之前beforebegin;a:之后afterend
   * @return {*} 
   * @memberof Dom
   * @example
   * insertAfter(document.getElementById('msg'), '<p>我是insertAfter方法插入before的</p>', 'b');   // 在msg为id的元素,之前添加p标签
   * insertAfter(document.getElementById('msg'), '<p>我是insertAfter方法插入after的</p>', 'a');   // 在msg为id的元素,之后添加p标签
   */
  insertAfter(el, htmlString, bORa = 'b') {
    const type = bORa ==='b' ? 'beforebegin' : 'afterend'
    return el.insertAdjacentHTML(type, htmlString)
  }
}

export default Dom