一些知识点随手记

82 阅读3分钟

截取一部分数组

               console.log('原数组: ', list)
            // var res = list.splice(3, 3)  // 会导致原数组的数据被剪切掉, 所以不能使用
            // var res = list.slice('开始下标', '结束下标')
             var res = list.slice(4, 8)  // 参数特点: 包前不包后, 包含开始下标, 不包含结束下标   所有截取下标包括4567
            // console.log(res)
            // console.log('截取后的数组: ', list)

关于分页截取数据

       设计
        var currentNum = 1  // 默认在 第一页
        var pageSize = 4    // 默认每页展示 4 条数据
        var totalNum = 0    // 计算总页码
          /**
         *  0.1 截取部分数据, 渲染页面
         * 
         *      假设 当前是第 1 页  每页展示 4 条
         *              页码 === 1          =>      [0]~[3]
         *              页码 === 2          =>      [4]~[7]
         *              页码 === 3          =>      [8]~[11]
         * 
         *      我们假设 当前页的数字存储在 currentNum 中, 每页展示多少条的数字存储在 pageSize 中  第一版理解, 第二版与第三版使用
         * 
         *          第一版
         *          开始下标: (currentNum - 1) * pageSize
         *          结束下标: currentNum * pageSize - 1
         * 
         *      但是 我们用的截取的方法参数有一个特点: 包前不包后, 所以开始下标不变, 结束下标 需要 + 1
         * 
         *          第二版
         *          开始下标: (currentNum - 1) * pageSize
         *          结束下标: currentNum * pageSize - 1 + 1
         * 
         *      所以最终的优化版本
         * 
         *          第三版
         *          开始下标: (currentNum - 1) * pageSize
         *          结束下标: currentNum * pageSize
        */
        var newArr = list.slice((currentNum - 1) * pageSize, currentNum * pageSize)

改变事件

     获取标签名.onchange = function () {
    onchange 事件会在域的内容改变时发生。
    onchange 事件也可用于单选框与复选框改变后触发的事件。
             
            }

点击事件

    获取标签名.onclick = function () {
       
       
    }

浏览器的滚动事件

    window.onscroll = function () {
        console.log('当前函数也不需要调用, 会在浏览器发生滚动事件的时候执行')
    }

浏览器延迟加载事件

        window.onload = function () {
            /**
             *  在以前开发的时候, 我们会将 所有的 JS 代码, 全都放在这个函数中运行
             * 
             *  因为在这个函数中运行的时候, 可以保证页面所有的资源已经加载完毕了, 比如  标签, 图片
            */
            console.log('当前函数不需要调用, 会在当前页面的所有资源加载完毕的时候执行')
        }

渲染函数

      function bindHtml() {
      
      }
      bindHtml() 
   页面渲染就是浏览器将HTML变成人眼看到的图像的全过程。

字符串扩展 ,与${}

/**
         *  扩展:
         *      字符串需要使用 '' 或者 "" 包裹, 但是不能换行, 内部也不能书写变量
         * 
         *      如果想要书写换行或者书写变量, 那么需要使用 `` 反引号
         * 
         *      如果需要在 `` 内 书写换行, 那么直接换行就行
         *      如果需要在 `` 内书写变量 需要使用 ${} 将变量包裹
        */

    /**
     *  创建一个渲染函数, 页面打开的时候调用
    */

    function bindHtml() {
        var str = ``
        for (var i = 0; i < dataList.length; i++) {
            str += `
                <li>
                    <img src="${dataList[i].imgurl}" alt="">
                    <p>${dataList[i].title}</p>
                </li>
            `
        }
        // console.log(str)
        document.querySelector('ul').innerHTML = str
    }

    bindHtml()

通过 属性名 是能够获取到 对象中的 属性值

                // console.log(dataKeys[k]) // 获取到 对象中的 所有属性名
                // console.log(data[i])    // 获取到 每一个对象

                /**
                 *  data[i] === {id: 1, name: '张三', age: 25, city: '北京'}
                 *  dataKeys[k] ===  他的值就是上述对象的某一个 属性名
                 * 
                 *  通过 属性名 是能够获取到 对象中的 属性值
                 *
                 *      语法: 对象[属性名]
                 *      根据语法并结合当前 案例:        data[i][dataKeys[k]]
                */

创建标签,添加到父元素 createElement , appendChild

// 1. 创建一个 tr 标签, 后续用于追加到 table
                    var myTr = document.createElement('tr')
// 创建 td
                    var myTd = document.createElement('td')
// 将 处理好的 td 追加到 tr 中 //  就是创建的子元素 添加到父元素中
                    myTr.appendChild(myTd)

innerHTML 与 appendChild 的区别

  appendChild 必须与 document.createElement('') 搭配使用
  document.createElement('') 是创造了一个Dom节点,也就新的标签
  innerHTML = 与他拼接的内容必须是'字符串' ,他也可以识别字符串中的标签 ,反应到页面上
  这俩无论用哪一个都可以把元素反应到页面上

e.target

  /**
         *  e.target    点击谁就是谁, 触发的事件源
         *  e.target.parentNode 触发的事件源的父级
         *  e.target.parentNode.parentNode  触发的事件源的父级的父级
         *  e.target.parentNode.parentNode.classList.add('editing')     给触发的事件源的父级的父级添加一个类名
         */