76-107

七十六、案例-记住用户名

    <div>
        名字
        <input type="text" id="name">
    </div>
    <div>
        年龄
        <input type="text" id="age">
    </div>
    <div>
        <button id="login">登录</button>
    </div>
    <script>
        login.onclick = function(){
            localStorage.setItem("name",name.value)
            localStorage.setItem("age",age.value)
        }
    </script>

七十七、初识DOM

在这里插入图片描述

七十八、获取元素的方法

doucment.getElementById()  填id
doucment.getElementByClassName()  填class
console.log(items) 伪数组
doucment.getElementByTagName(“li”) 填标签
doucment.getElementByName()  填name来*(用于input)*

在这里插入图片描述

七十九、操作元素属性

在这里插入图片描述
用innerHTML改变值
id + . + 标签 改变标签类型
在这里插入图片描述
.src = 引入地址

八十、案例-密码可视

    <input type="password" id="password">
    <button id="eyebtn">eye</button>
    <script>
        var passInput = document.getElementById("password")
        var eyeBtn = document.querySelector("#eyebtn")
        eyeBtn.onclick = function () {
            console.log(passInput.type)

            if (passInput.type === "password") {
                passInput.type = "text"
            } else {
                passInput.type = "password"
            }
        }
    </script>

八十一、案例-购物车全选

    <input type="checkbox"id="all">全选/全不选
    <hr>
    <ul class="shop">
        <li>
            <input type="checkbox">商品1
        </li>
        <li>
            <input type="checkbox">商品2
        </li>
        <li>
            <input type="checkbox">商品3
        </li>
        <li>
            <input type="checkbox">商品4
        </li>
    </ul>
    <script>
        var oAll=document.querySelector("#all")
        var oitems=document.querySelectorAll(".shop input")

        oAll.onclick=function(){
            console.log(oAll.checked )
            for(var i=0;i<oitems.length;i++){
                oitems[i].checked=oAll.checked
            }
        }
        for(var i=0;i<oitems.length;i++){
            oitems[i].onclick=handler
        }
        function handler(){
            var count=0
            for(var i=0;i<oitems.length;i++){
                if(oitems[i].checked) count++
            }
            if(count===oitems.length){
                oAll.checked=true
            }else{
                oAll.checked=false
            }
        }
    </script>

八十二、操作元素文本内容

innerHTML

innerText

在这里插入图片描述

value

在这里插入图片描述

八十三、案例-渲染页面

八十四、操作元素样式

内部样式,外部样式,行内getComputedStyle 获取,不能赋值写样式。
在这里插入图片描述
获取背景色(注意不能写成.background-color)

八十五、操作元素类名

在这里插入图片描述

.className 赋值
classList属性
add方法 增加
remove方法 删除
toggle 切换

八十六、案例-简易选项卡

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .active {
            color: brown;
        }
    </style>
</head>

<body>
    <ul>
        <li class="active" id="item1">文字一</li>
        <li id="item2">文字二</li>
    </ul>
    <script>
        item1.onclick = function () {
            item1.classList.add("active")
            item2.classList.remove("active")
        }
        item2.onclick = function () {
            item2.classList.add("active")
            item1.classList.remove("active")
        }
    </script>
</body>

</html>

八十七、案例-选项卡

八十八——九十、DOM节点

在这里插入图片描述

<div type ="..."><p>猪</p></div>
div是父节点
p是子节点
猪是文本节点
p是元素节点
type是属性节点

在这里插入图片描述

获取节点

childNodes 所有节点
children 所有元素节点
firstchildren 第一个子节点
lastchildren 最后一个
firstElementChild 第一个元素节点
lastElementChild 最后一个
previousSibling 上一个兄弟节点
previousElementSibling 上一个元素节点
nextSibling 下一个兄弟节点
nextElementSibling 下一个元素节点
parentNode 父节点
parentElement 父节点且必须是元素节点
getAttribute 拿到精准的一个属性节点
attributes 拿到全部属性节点

操作节点

在这里插入图片描述
createElement 创建一个元素节点
在这里插入图片描述

appendChild 插入节点
在这里插入图片描述

insertBefore() 在之前插入节点
在这里插入图片描述

removeChild 删除节点
remove 删除自己和后代节点
replaceChild 替换节点(新节点,旧节点)
cloneNode() 复制节点 默认为false不复制后代,true复制后代
在这里插入图片描述

九十一、案例-动态删除

    <ul id="list">

    </ul>
    <script>
        var arr = ["111", "2222", "333"]
        for (var i = 0; i < arr.length; i++) {
            var oli = document.createElement("li")
            oli.innerHTML = arr[i]
            var obutton = document.createElement("button")
            obutton.innerHTML = "delete"
            obutton.onclick = handler
            oli.appendChild(obutton)
            list.appendChild(oli)
        }
        function handler() {
            this.parentNode.remove()
        }
    </script>

九十二、节点属性

九十三、获取元素尺寸

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

九十四、获取元素偏移量

offsetLeft 左偏移量
offsetTop 顶部偏移量
参考点是:定位父级。如果父级元素都没有定位,则相对于body的偏移量
clientLeft 左边框长度
clientTop 顶部边框长度

九十五、获取可视窗口的尺寸

document.documentElement.clientWidth 宽度
document.documentElement.clientHeight 高度
不包含滚动条的宽,高

九十六、案例-懒加载

九十七、初识事件

在这里插入图片描述
在这里插入图片描述
dom2 绑定多个事件处理函数,按顺序执行

九十八、事件解绑

disabled 禁用

在这里插入图片描述

dom0方式
.οnclick=null 赋值为空,用于解绑
在这里插入图片描述

dom2方式
removeEventListener(“click”,handler) 解绑
在这里插入图片描述

九十九、事件类型

鼠标事件

click 单击执行
dblclick 双击执行
contextmenu 右键单击
mousedown 鼠标按下
mousemove 鼠标移动
mouseup 鼠标抬起

mouseover 移入 mouseout 移出 在子元素上也能触发

mouseenter 移入 mouseleave 移出 在子元素上不会触发

键盘事件

keydown 键盘按下
keyup 键盘抬起

表单事件

focus 获取焦点
blur 失去焦点
change 获取焦点和失去焦点时里面内容不一样才会触发
input

submit 提交 reset 重置 对form绑定

触摸事件(只针对移动端)

touchstart 触摸开始
touchmove 触摸移动
touchend 触摸结束

一百、事件对象

在这里插入图片描述

一百零一、事件对象-鼠标事件

clientX clientY 距离浏览器可视窗口左上角的坐标值
pageX pageY 相对于页面文档流左上角的位置
offsetX offsetY 距离触发元素的左上角的坐标值

一百零二、案例-鼠标跟随

在这里插入图片描述

box.onmouseover = function(){
this.firstElementChild.style.display="block"
}
box.onmouseout = function(){
this.firstElementchild.style.display="none"
}
box.onmousemove = function(evt){
// console.log(evt.offsetx, evt.offsetY)
this.firstElementChild.style.left = evt.offsetX +"px"this.firstElementChild.style.top = evt.offsetY +"px"
}

一百零三、案例-鼠标拖拽

一百零四——一百零八、DOM事件流

在这里插入图片描述

捕获:window=>document=>body=>outer
目标:inner
冒泡:outer=>body=>document=>window
默认情况 只在冒泡触发
按照dom2事件绑定,并进行配置 才能看到捕获的回调函数触发

阻止事件传播

evt.stopPropagation()
evt.canaleBubble=true 适用于ie低版本

阻止默认行为

return false dm0方式
evt.preventDefault() dom2方式
evt.returnValue=false ie低版本方式

案例、自定义右键菜单

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        ul{
            list-style: none;
            width: 200px;
            padding: 10px;
            border: 1px solid black;
            display: none;
            position: absolute;
        }
    </style>
</head>

<body>
    <ul id="list">
        <li>aaa</li>
        <li>aaa</li>
        <li>aaa</li>
        <li>aaa</li>
    </ul>
    <script>
        document.addEventListener("contextmenu", function (evt) {
            evt.preventDefault()
            list.style.display = "block"
            var x = evt.clientX
            var y = evt.clientY
            if (x >= document.documentElement.clientWidth - list.offsetWidth)
                x = document.documentElement.clientWidth - list.offsetWidth
            list.style.left = x + "px"
            list.style.top = y + "px"
        })
    </script>
</body>

</html>

事件委托

把子元素事件委托给父元素
evt.target
evt.srcElement
好处:减少性能损耗
动态添加li,也会有事件处理,不用再次添加

<svg version="1.0" xmlns="http://www.w3.org/2000/svg" width="800.000000pt" height="106.000000pt" viewBox="0 0 800.000000 106.000000" preserveAspectRatio="xMidYMid meet"> <g transform="translate(0.000000,106.000000) scale(0.100000,-0.100000)" fill="#000000" stroke="none"> <path d="M2220 932 l0 -131 38 -6 c115 -18 198 -53 243 -101 l22 -24 27 68 c26 66 72 144 113 190 20 22 20 22 1 38 -64 52 -175 82 -336 91 l-108 6 0 -131z"/> <path d="M6673 1040 c-64 -39 -87 -106 -58 -171 44 -97 180 -107 235 -16 71 116 -63 257 -177 187z"/> <path d="M0 930 l0 -120 510 0 510 0 0 120 0 120 -510 0 -510 0 0 -120z"/> <path d="M1140 1045 c-1 -3 -1 -56 -1 -117 l0 -113 351 -5 352 -5 24 -28 c32 -37 32 -86 0 -116 -23 -21 -27 -22 -375 -24 l-353 -2 0 -110 0 -110 362 -5 362 -5 19 -24 c27 -33 25 -86 -6 -116 l-24 -25 -354 0 c-194 0 -356 -2 -358 -4 -2 -2 -3 -54 -1 -115 l3 -111 338 0 c367 0 412 5 501 57 62 37 138 110 163 158 16 29 21 59 22 110 0 76 -16 119 -61 168 l-26 28 20 22 c32 35 60 100 68 154 14 112 -56 230 -169 286 -106 52 -152 57 -519 57 -186 0 -338 -2 -338 -5z"/> <path d="M3031 1034 c-176 -38 -309 -143 -386 -306 -24 -51 -55 -132 -69 -180 -31 -106 -55 -155 -98 -198 -45 -45 -106 -70 -188 -77 l-70 -6 0 -133 0 -134 84 0 c172 0 321 48 399 128 l39 40 36 -40 c68 -76 179 -113 365 -125 l107 -6 0 135 0 136 -57 7 c-222 28 -330 177 -254 350 39 87 125 142 240 153 l66 7 3 133 3 132 -78 -1 c-43 0 -107 -7 -142 -15z"/> <path d="M3430 985 l0 -45 560 0 560 0 0 -93 c0 -59 -5 -99 -12 -110 -12 -16 -47 -17 -438 -15 l-425 3 0 35 0 35 388 3 387 2 0 40 0 40 -510 0 -510 0 0 -79 c0 -97 10 -125 52 -151 32 -19 51 -20 616 -20 644 0 629 -1 667 63 17 27 20 56 23 185 l4 152 -681 0 -681 0 0 -45z"/> <path d="M4994 1016 c-3 -8 -4 -27 -2 -43 l3 -28 276 -5 276 -5 -18 -42 -18 -43 -250 0 -250 0 -3 -211 c-2 -116 -1 -213 1 -215 2 -2 229 -4 503 -4 l498 0 0 50 0 50 -380 0 -381 0 3 118 3 117 423 0 423 0 -1 -310 c0 -271 -3 -311 -17 -327 -15 -17 -44 -18 -413 -18 -352 0 -399 2 -411 16 -9 12 -12 46 -10 125 l2 109 -125 0 -126 0 0 -122 c0 -143 13 -182 70 -211 32 -16 78 -17 613 -15 l579 3 34 37 c34 38 34 38 34 136 0 54 3 228 7 385 l6 287 -291 0 c-318 0 -303 -3 -281 58 l11 31 270 3 270 3 24 28 c52 60 88 57 -661 57 -582 0 -686 -2 -691 -14z"/> <path d="M6980 976 c0 -51 27 -66 119 -66 l74 0 -6 -67 c-4 -38 -7 -94 -7 -125 l0 -58 -84 0 c-101 0 -136 -19 -136 -76 l0 -34 109 0 109 0 -5 -200 -6 -200 126 0 127 0 0 78 c0 44 3 134 7 200 l6 122 82 0 c100 0 135 19 135 76 l0 34 -111 0 -112 0 6 83 c4 45 7 101 7 125 l0 42 141 0 140 0 -5 -42 c-3 -24 -8 -174 -11 -333 -7 -320 -6 -331 50 -365 27 -17 50 -20 149 -20 l116 0 0 40 c0 35 -3 40 -24 40 -48 0 -48 4 -37 374 6 189 11 358 11 375 l0 31 -485 0 -485 0 0 -34z"/> <path d="M6558 729 c-11 -6 -18 -22 -18 -39 0 -28 2 -30 41 -30 l42 0 -6 -127 c-4 -71 -10 -219 -13 -331 l-7 -202 104 0 c80 0 110 4 128 16 21 15 61 16 465 5 710 -19 643 -21 672 12 13 15 24 36 24 46 0 16 -30 18 -432 29 -601 17 -653 20 -682 43 l-24 19 5 285 6 285 -144 0 c-79 0 -152 -5 -161 -11z"/> <path d="M7 633 c-4 -3 -7 -145 -7 -315 l0 -308 510 0 510 0 0 115 0 115 -340 0 -340 0 0 85 0 85 340 0 340 0 0 115 0 115 -503 0 c-277 0 -507 -3 -510 -7z"/> <path d="M3524 602 c-6 -4 -39 -60 -74 -124 l-62 -118 69 0 c101 0 141 14 196 71 l47 49 423 0 422 0 -3 -182 c-2 -100 -7 -187 -13 -194 -5 -6 -33 -14 -61 -16 -40 -4 -57 -11 -75 -32 -47 -55 -40 -58 141 -54 148 3 167 5 193 24 15 11 33 32 39 45 8 15 13 111 15 259 l4 235 -522 3 c-515 2 -521 2 -516 22 5 19 0 20 -103 20 -60 0 -114 -4 -120 -8z"/> <path d="M3748 433 c-16 -18 -218 -404 -218 -416 0 -15 113 -6 164 14 94 35 144 90 228 251 40 79 74 148 76 155 3 10 -24 13 -116 13 -101 0 -121 -3 -134 -17z"/> <path d="M4188 433 c-13 -15 -218 -410 -218 -420 0 -1 37 -3 83 -3 152 1 187 32 312 273 l87 167 -125 0 c-106 0 -126 -3 -139 -17z"/> </g> </svg> 优化并且重构这段svg代码
04-20

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值