• 1.从面向过程到面向对象的过渡


      1 <!DOCTYPE html>
      2 <html lang="en">
      3   <head>
      4     <title></title>
      5     <meta charset="UTF-8">
      6     <meta name="viewport" content="width=device-width, initial-scale=1">
      7     <!--<link href="css/style.css" rel="stylesheet">-->
      8     <style>
      9       div{
     10         100px;
     11         height:200px;
     12         margin-top:20px;
     13       }
     14       p{
     15         100px;
     16         height:200px;
     17         margin-top:20px;
     18       }
     19       .className{
     20         background: #f94 !important;
     21       }
     22     </style>
     23   </head>
     24   <body>
     25     <div></div>
     26     <div class="div2"></div>
     27     <div id="div3"></div>
     28     <p></p>
     29     <p></p>
     30     <script>
     31       // 一、面向对象的基本用法,和jquery的基本实现方式
     32       // 1.需求:给div设置背景颜色
     33       // 面向过程的基本做法
     34       // 1.获取元素,2.设置样式(简单来看并没有什么不妥,但是我们现在又要给别的元素设置样式呢,那么是不是代码就会重复?)
     35       // 下面我们使用面向过程的方式实现一遍
     36       var divs = document.querySelectorAll('div')
     37        for (var i = 0; i < divs.length; i++) {
     38          divs[i].style.backgroundColor = 'pink'
     39        }
     40       //  思考:那我们现在还要将所有的p元素的背景颜色做设置呢?是不是又要重新复制一遍上面的代码?
     41 
     42       // 二、为了不重复上面的代码,对于初学者我们第一个也许会想到,函数的封装(其实函数的封装就是面向对象的启蒙)下面我们使用函数的封装来实现一遍上面的需求
     43       // 获取元素的函数
     44       var getEles = function (element) {
     45         return document.querySelectorAll(element)
     46       }
     47       // 设置样式的函数
     48       var setStyle = function (eles, color) {
     49         for (var i = 0; i < eles.length; i++) {
     50           eles[i].style.backgroundColor = color
     51         }
     52       }
     53       // 现在我们先对所有的div元素设置背景颜色
     54       setStyle(getEles('div'), '#333')
     55       // 现在我们再对所有的p元素设置背景样式
     56       setStyle(getEles('p'), '#0f4')
     57 
     58       // 思考:加入我现在只要更改其中某一个元素的背景样式呢,显然我们封装的园区元素的函数就不有点不适用了,怎么办呢,在封装一个函数?其实是可行的
     59       // 但是有一个问题就是,获取dom元素的方式有很多种,哪我们就要封装很多方法,然而这里有一个问题,就是全局变量污染问题
     60       // 那为了解决这个问题,我们可以将所有的方法封装到一个统一的对象里面
     61       var jquery = {
     62         // 这里是获取元素模块
     63         getEles: {
     64           selectAll: function (eles) {
     65             return document.querySelectorAll(eles)
     66           },
     67           selectId: function (id) {
     68             return document.getElementById(id)
     69           },
     70           selectClass: function (className) {
     71             return document.getElementsByClassName(className)
     72           }
     73         },
     74         // 这里是设置样式的模块
     75         setStyle: {
     76           setBgColor: function (eles, color) {
     77             if (eles.length) {
     78               for (var i = 0; i < eles.length; i++) {
     79                 eles[i].style.background = color
     80               }
     81             } else {
     82               eles.style.backgroundColor = color
     83             }
     84           },
     85           setClass: function (eles, className) {
     86             for (var i = 0; i < eles.length; i++) {
     87               eles[i].className = className
     88             }
     89           }
     90         }
     91       }
     92       // 设置全部div的背景颜色
     93       jquery.setStyle.setBgColor(jquery.getEles.selectAll('div'), 'red')
     94       // 设置全部p的背景颜色
     95       jquery.setStyle.setBgColor(jquery.getEles.selectAll('p'), 'yellow')
     96       // 根据id设置背景
     97       jquery.setStyle.setBgColor(jquery.getEles.selectId('div3'), 'blue')
     98       // 根据className设置样式
     99       jquery.setStyle.setClass(jquery.getEles.selectClass('div2'), 'className')
    100     </script>
    101   </body>
    102 </html>
  • 相关阅读:
    无向图的双连通分量
    以管理员身份运行软件cmd命令
    异或
    递推求解DAG最长路径长度及最长路径条数
    有向图转强连通图最少加边数
    Tarjan强连通分量(scc)
    uni封装request请求
    生命周期
    页面路由,以及传值
    WXS 模块
  • 原文地址:https://www.cnblogs.com/songdongdong/p/6926508.html
Copyright © 2020-2023  润新知