day49 面向对象面试 + 文档操作和事件

 

1. 内容回顾
1. 今日面试题

  1. 谈谈你对面向对象的理解?
    对象 = 数据 + 方法

  2. Python面向对象中的继承有什么特点?

  3. 面向对象深度优先和广度优先是什么?

    继承多个对象 ,有相同的方法,该听谁的?

  必须得了解:
    MRO
    深度优先 广度优先

        C3算法 => http://python.jobbole.com/85685/


  4. 面向对象中super的作用?
    在子类中执行父类的方法
  5. 列举面向对象中特殊成员(带双下划线的特殊方法,如:__new__、__init__、__call__等)
     __new__(): 开辟空间,创建对象
     __init__(): 初始化对象,对象属性的赋值
    __call__(): 对象()直接执行的代码
    __str__(): print(对象)时执行的
    __repr__(): 解释器环境下直接输入对象展示的内容
    __len__(): len()
    __del__(): 析构
    __hash__():
    __eq__():
    __setitem__():
    __getitem__():
    __delitem__():
  6. 静态方法和类方法区别?

class Person(object):
    name = "黄袍哥"

    def __init__(self, name):
        self.name = name

    @staticmethod
    def yongshou():
        print("不可描述...")

    @classmethod
    def haiyongshou(cls):
        """
        修改静态属性
        :return:
        """
        cls.name = "蝇蝇"
        print("再次不可描述...")
        print(cls.name)

    @property
    def age(self):
        return "本是同根生,相煎何太急!"



Person.yongshou()
Person.haiyongshou()
p1 = Person("康抻")
print(p1.age)
View Code

 



2. 作业讲解
1. 练习题:登录验证

判断输入值是否为空

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta http-equiv="content-Type" charset="UTF-8">
    <meta http-equiv="x-ua-compatible" content="IE=edge">
    <title>d登录验证练习题</title>
</head>
<body>

<form action="" id="f1">
    <p>
        <label>用户名:
            <input type="text" name="username" id="i1">
            <span></span>
        </label>
    </p>
    <p>
        <label>密码:
            <input type="password" name="password" id="i2">
            <span></span>
        </label>
    </p>
    <button type="button" id="b1">登录</button>
</form>

<script src="jquery-3.3.1.js"></script>
<script>
    $("#b1").click(function () {
        var $inputEles = $("#f1 input");
        for (var i=0;i<$inputEles.length;i++){
            var tmp = $inputEles[i];
            if ($(tmp).val().length === 0){
                // 表示该input框的值为空
                console.log($(tmp).parent().text().trim().slice(0,-1));
                var s = $(tmp).parent().text().trim().slice(0,-1);
                $(tmp).next().text(s + "不能为空").css("color", "red");
            }
        }
    });
</script>
</body>
</html>
View Code

 

2. 作业:全选、反选和取消

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta http-equiv="content-Type" charset="UTF-8">
    <meta http-equiv="x-ua-compatible" content="IE=edge">
    <title>Title</title>
</head>
<body>

<table border="1">
    <thead>
    <tr>
        <th>序号</th>
        <th>姓名</th>
        <th>爱好</th>
    </tr>
    </thead>
    <tbody>
    <tr>
        <td><input type="checkbox"></td>
        <td>蝇蝇</td>
        <td>用手</td>
    </tr>
    <tr>
        <td><input type="checkbox"></td>
        <td>康抻</td>
        <td>gay in gay out</td>
    </tr>
    <tr>
        <td><input type="checkbox"></td>
        <td>黄袍哥</td>
        <td>吹牛逼</td>
    </tr>
    </tbody>
</table>
<hr>
<button id="b1">全选</button>
<button id="b2">反选</button>
<button id="b3">取消</button>
<script src="jquery-3.3.1.js"></script>
<script>
    // 全选
    $("#b1").click(function () {
        // 找到所有的checkbox,选中:prop("checked", true)
        $(":checkbox").prop("checked", true);
    });
    // 取消
    $("#b3").click(function () {
        // 找到所有的checkbox,取消选中:prop("checked", false)
        $(":checkbox").prop("checked", false);
    });
    // 反选
    $("#b2").click(function () {
        // 找到所有选中的checkbox取消选中
        // $("input:checked").prop("checked", false);   // 此时全部都没选中
        // // 找到所有没选中的checkbox选中
        // $("input:not(:checked)").prop("checked", true)  // 此时都全选中

        // var $check = $(":checkbox");
        // for (var i=0;i<$check.length;i++){
        //     var tmp = $check[i];
        //     var s = $(tmp).prop("checked");
        //
        //     // 如果s是true就改成false,如果是false就改成true
        //     // if (s){
        //     //     $(tmp).prop("checked", false);
        //     // }else {
        //     //     $(tmp).prop("checked", true);
        //     // }
        //
        //     $(tmp).prop("checked", !s);
        // }

        // 找到所有选中的checkbox;
        var $checked = $("input:checked");
        // 找到没有选中的
        var $unchecked = $("input:not(:checked)");
        $checked.prop("checked", false);
        $unchecked.prop("checked", true);
    });
</script>
</body>
</html>
View Code

 


3. jQuery操作
  1. 昨日内容回顾
    1. 操作样式
      1. 操作class
      2. 操作CSS
        $("").css("color") --> 获取选中标签的颜色值
        $("").css("color", "yellow") --> 设置选中标签的颜色值


    2. 位置操作
      1. position() --> 获取相对定位过的  元素的偏移
      2. offset() --> 获取相对当前窗口的偏移
      3. scrollTop() --> 相对顶部的偏移
      4. scrollLeft() --> 相对左侧的偏移
        返回顶部示例!

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="x-ua-compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>位置相关示例之返回顶部</title>
  <style>

    .c2 {
      height: 50px;
      width: 50px;

      position: fixed;
      bottom: 15px;
      right: 15px;
      background-color: #2b669a;
    }
    .hide {
      display: none;
    }
    .c3 {
      height: 100px;
    }
  </style>
</head>
<body>

<div class="c3">1</div>
<div class="c3">2</div>
<div class="c3">3</div>
<div class="c3">4</div>
<div class="c3">5</div>
<div class="c3">6</div>
<div class="c3">7</div>
<div class="c3">8</div>
<div class="c3">9</div>
<div class="c3">10</div>
<div class="c3">11</div>
<div class="c3">12</div>
<div class="c3">13</div>
<div class="c3">14</div>
<div class="c3">15</div>
<div class="c3">16</div>
<div class="c3">17</div>
<div class="c3">18</div>
<div class="c3">19</div>
<div class="c3">20</div>
<div class="c3">21</div>
<div class="c3">22</div>
<div class="c3">23</div>
<div class="c3">24</div>
<div class="c3">25</div>
<div class="c3">26</div>
<div class="c3">27</div>
<div class="c3">28</div>
<div class="c3">29</div>
<div class="c3">30</div>
<div class="c3">31</div>
<div class="c3">32</div>
<div class="c3">33</div>
<div class="c3">34</div>
<div class="c3">35</div>
<div class="c3">36</div>
<div class="c3">37</div>
<div class="c3">38</div>
<div class="c3">39</div>
<div class="c3">40</div>
<div class="c3">41</div>
<div class="c3">42</div>
<div class="c3">43</div>
<div class="c3">44</div>
<div class="c3">45</div>
<div class="c3">46</div>
<div class="c3">47</div>
<div class="c3">48</div>
<div class="c3">49</div>
<div class="c3">50</div>
<div class="c3">51</div>
<div class="c3">52</div>
<div class="c3">53</div>
<div class="c3">54</div>
<div class="c3">55</div>
<div class="c3">56</div>
<div class="c3">57</div>
<div class="c3">58</div>
<div class="c3">59</div>
<div class="c3">60</div>
<div class="c3">61</div>
<div class="c3">62</div>
<div class="c3">63</div>
<div class="c3">64</div>
<div class="c3">65</div>
<div class="c3">66</div>
<div class="c3">67</div>
<div class="c3">68</div>
<div class="c3">69</div>
<div class="c3">70</div>
<div class="c3">71</div>
<div class="c3">72</div>
<div class="c3">73</div>
<div class="c3">74</div>
<div class="c3">75</div>
<div class="c3">76</div>
<div class="c3">77</div>
<div class="c3">78</div>
<div class="c3">79</div>
<div class="c3">80</div>
<div class="c3">81</div>
<div class="c3">82</div>
<div class="c3">83</div>
<div class="c3">84</div>
<div class="c3">85</div>
<div class="c3">86</div>
<div class="c3">87</div>
<div class="c3">88</div>
<div class="c3">89</div>
<div class="c3">90</div>
<div class="c3">91</div>
<div class="c3">92</div>
<div class="c3">93</div>
<div class="c3">94</div>
<div class="c3">95</div>
<div class="c3">96</div>
<div class="c3">97</div>
<div class="c3">98</div>
<div class="c3">99</div>
<div class="c3">100</div>

<button id="b2" class="btn btn-default c2 hide">返回顶部</button>
<script src="jquery-3.3.1.min.js"></script>
<script>






  $(window).scroll(function () {
    if ($(window).scrollTop() > 100) {
      $("#b2").removeClass("hide");
    }else {
      $("#b2").addClass("hide");
    }
  });




  $("#b2").on("click", function () {
    $(window).scrollTop(0);
  })
</script>
</body>
</html>
返回顶部设置

    3. 尺寸操作
      1. height/width 元素
      2. innerHeight/innerWidth 元素 + 内填充
      3. outerHeight/outerWidth 元素 + 内填充 + 边框
    4. 文本操作
      1. text()   
      2. html()   认识标签
    5. 求值(input/select/textarea)

      默认返回第一个值,设置的话 全部设置的
      1. .val()     
      2. .val("新值")
      3. .val(["1", "2"])
    6. 属性操作
      1. attr     属性值
      2. prop   布尔

  2. 补充
    1. val()取值和设置值
    2. attr()和prop()的区别

2. 今日内容
  1. 文档操作
      创建标签用:document.createElement("div")
            var divEle = document.createElement("div")

            divEle.innerText  = "呵呵"

            然后再添加divEle 就行了
      1. 内部添加
        1. 前面加
          1. $(A).prepend(B)
          2. $(A).prependTo(B)
        2. 后面加
          1. $(A).append(B)
          2. $(B).appendTo(A)
      2. 外部添加
        1. 前面加
          1. $(A).before(B)
          2. $(B).insertBefore(A)
        2. 后面加
          1. $(A).after(B)
          2. $(B).insertAfter(A)

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta http-equiv="content-Type" charset="UTF-8">
    <meta http-equiv="x-ua-compatible" content="IE=edge">
    <title>Title</title>
</head>
<body>

<button id="b1">添加</button>
<table border="1">
    <thead>
    <tr>
        <th>序号</th>
        <th>姓名</th>
        <th>爱好</th>
        <th>操作</th>
    </tr>
    </thead>
    <tbody>
    <tr>
        <td>1</td>
        <td>康抻</td>
        <td>gay in gay out</td>
        <td><button class="delete">开除</button></td>
    </tr>
    <tr>
        <td>2</td>
        <td>蝇蝇</td>
        <td>用手</td>
        <td><button class="delete">开除</button></td>
    </tr>
    </tbody>
</table>
<script src="jquery-3.3.1.js"></script>
<script>
    $("#b1").click(function () {
        // 在表格的最后添加一行数据
        // 1. 先有数据
        var trEle = document.createElement("tr");  // trEle是一个DOM对象

        // var tdEle1 = document.createElement("td");
        // tdEle1.innerText = "3";
        // $(trEle).append(tdEle1);
        // var tdEle2 = document.createElement("td");
        // tdEle2.innerText = "黄袍哥";
        // $(trEle).append(tdEle2);
        // var tdEle3 = document.createElement("td");
        // tdEle3.innerText = "吹牛逼";
        // $(trEle).append(tdEle3);
        trEle.innerHTML = `
            <td>3</td>
            <td>黄袍哥</td>
            <td>吹牛逼</td>
            <td><button class="delete">开除</button></td>
        `;
        // 2. 追加到tbody的最后
        $("tbody").append(trEle);
    })
</script>
</body>
</html>
文档操作

 


      3. 移除和清空
          1. remove() --> 把选中过的标签从文档树中移除
          2. empty() --> 把选中的标签内部的元素都移除
      4. 替换
          1. $(A).replaceWith(B)
          2. $(B).replaceAll(A)   

用aele 替换p标签

 

 


      5. clone
          注意参数true,加上true会把标签绑定的事件也复制

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta http-equiv="content-Type" charset="UTF-8">
    <meta http-equiv="x-ua-compatible" content="IE=edge">
    <title>Title</title>
</head>
<body>

<button class="btn">屠龙宝刀,点击就送!</button>
<script src="jquery-3.3.1.js"></script>
<script>
    $(".btn").click(function () {
        // 自己复制自己,然后把复制的结果插到我的后面
        $(this).clone(true).insertAfter(this);
    })
</script>
</body>
</html>
自己复制自己,然后把复制的结果插到我的后面

 



    2. 事件
      1. jQuery绑定事件的方式
        1. 给标签绑定事件的方式
          1. 在标签上写 onclick=函数();
          2. 在js代码中 标签对象.onclick = function(){}
      2. jQuery绑定事件
        1. $("选择器").click(function(){...});
    3. 事件委托
      原理:事件冒泡
          1. 如何阻止事件冒泡(向上传递)
            e.stopPropagation()
      目的:解决未来的标签如何绑定事件!
      语法:
            $("祖先标签").on("click", "选择器", function(){...})

3. 今日作业
1. 整理blog
2. 把课上的代码自己敲一遍
3. 事件冒泡的例子自己敲一遍
4. 把黄袍哥开除的例子




 

posted @ 2020-05-30 10:21  蜗牛般庄  阅读(155)  评论(0编辑  收藏  举报
Title
页脚 HTML 代码