24-09-07JS高阶

jsDOM

dom就是我们的标签 dom是标签的一种叫法
通过dom访问和修改操作让网页动起来
通常,通过 JavaScript,需要操作 HTML 元素:
1通过 id 找到 HTML 元素
2通过标签名找到 HTML 元素
3通过类名找到 HTML 元素

<body>
    <div id="item"></div>
    <p id="item1"></p>
    <div class="class"></div>
    <script>
        // <!-- 获取dom标签 通过id获取dom  必须以document获取开头-->
        // 通过id--->getElementById('这里添加元素') 获取dom  没有获取到对象返回null
        document.getElementById('item') 
        let a = document.getElementById('item')
        console.log(a);
        // 通过标签获取dom 必须以document获取开头
        // 通过 标签名getElementsByTagName('元素')
        let b =document.getElementsByTagName('div')
        console.log(b);
        // 通过类名找到  getElementsByClassName HTML 元素
        let c= document.getElementsByClassName('class')
        console.log(c);
        // 通过通用方法获取HTML元素 开头document 方法querySelector('这里添加元素')
        let d = document.querySelector(".class")
        console.log(d);
        // 获取多个标签querySelectorAll 写法:后面多加了一个all all是所有的意思
        let e = document.querySelectorAll("div")
        console.log(e);
    </script>
</body>

通过dom修改样式

<body>
    <div class="item">今天星期六</div>
    <script>
        // 获取dom元素获取的是对象
        let a = document.querySelector(".item")
        console.log(a);
        // 通过  .style:控制样式 修改字体 font-size 去掉- -后面的字母大写 fontSize
        a.style.fontSize="80px"
        a.style.color='red'
    </script>
</body>

获取文本内容

<body>
    <input type="text" value="输入的内容"> 
    <div class="div">今天下雨</div>
    <script>
        // 获取标签
        let a = document.querySelector('.div')
        console.log(a);
        // 获取文本 innerHTML 获取文本内容 输入框除外
        console.log(a.innerHTML);
        // 修改内容
        a.innerHTML='不下雨了'
        // 通过 .value 获取输入框的内容
        let b =document.querySelector('input')
        console.log(b.value);
    </script>
</body>

事件

JavaScript使我们有能力创建动态页面,而事件是可以被JavaScript侦测到的行为
事件是由三部分组成,事件源,事件类型,事件处理程序(事件三要素)
事件源:事件被触发的对象
事件类型:如何触发 什么事件
事件处理程序:当这个事件被触发之后会发生什么样的事情

格式:

// addEventListener函数 写事件和回调函数
DOM.addEventListener(事件,回调函数)

--click 点击事件 点击后发生什么事情

<body>
    <button>按钮</button>
    <script>
 // 获取按钮 然后存到变量btn
        let btn = document.querySelector('button')
        console.log(btn);
        // 点击按钮获得监听-->addEventListener 事件 里面有两个默认形参
        // 事件源-按钮-btn 时间类型-点击-click  实践出发之后出发弹窗-alert
        // 语法 事件源.addEventListener('这里是事件类型',()=>{这里添加触发过程('这里添加触发的结果')})
        // 触发时间 函数自动被调用
        btn.addEventListener('click',()=>{
            alert('触发时间')
        })
    </script>
</body>
#---- 练习 点击按钮 改变div的内容 innerHTML可以读取或者设置标签包裹的内容
<body>
 <!-- 创建了一个div标签 他的类名叫fun -->
 <div class="fun">床前明月光</div>
 <button>按钮</button>
 <script>  
// 1.获取按钮
let but = document.querySelector("button")//通过document.querySelector("button")获取到了按钮
// 获取类名为fun的div标签并存到变量fun中
let fun = document.querySelector(".fun")
 but.addEventListener("click",()=>{
 // innerHTML就是获取类名为fun的div的内容
fun.innerHTML = "疑是地上霜"
 })
 </script>  
</body>

change 触发事件 获取输入框值

<body>
    <h1></h1>
    <input type="text">
    <script>
        // 想拿到输入框的内容 并且渲染到页面
        let input = document.querySelector("input") //获取到输入框 并存到变量input里面去
        let h1 = document.querySelector("h1")
        // 给事件  addEventListener
        // change 表单里面的值发生改变 事件就会触发
        // 我们的事件都有回调函数 回调函数里面有一个形参e
        input.addEventListener("change", (e) => {
            // e.target.value就是我们输入的值 这个记住就行
            // console.log(e.target.value);
            // 将获取到输入框输入的值存到h1.innerHTML中
            h1.innerHTML = e.target.value
        })
    </script>
</body>

----练习代码

<body>
 <button>点击+1</button>
 <div>0</div>
 <script>
 // 我们喜欢做一件事
// 点击按钮 让div+1
 // 获取按钮
let but = document.querySelector("button")//获取到button存到变量but中
let div = document.querySelector("div")//获取到了div存到变量div中
// 要给事件
but.addEventListener("click",()=>{
 // 我们可以把点击按钮想做的事情写在回调函数中
// innerHTML获取到里面的内容
console.log(typeof div.innerHTML);//string类型
// 为什么 div.innerHTML++ 可以进行累加
// 因为++它自己能够将内容转成数值 然后累加
div.innerHTML++
 // 这里做判断应该写整数10还是字符串10
 // 无所谓 ==只判断 值是否相等
if(div.innerHTML==10){ //如果div.innerHTML==10 内容等于10
 div.style.color = "red"//让文字颜色变为红色}})
 </script>
</body>

鼠标事件 鼠标移至 HTML 元素上方或移出元素时触发的事件

    <style>
        div {
            width: 200px;
            height: 150px;
            background-color: red;
        }
    </style>
</head>

<body>
    <div>撒大声地撒</div>
    <script>
        // 获取 div
        let div = document.querySelector('div')
        // 鼠标移入 mouseover 改变文本内容颜色 背景颜色
        div.addEventListener('mouseover', () => {
            div.style.backgroundColor = 'black'
            div.style.color = 'yellow'
            div.innerHTML = 'sadasasd'
        })
        // 鼠标移出 mouseout 恢复文本内容颜色 背景颜色
        div.addEventListener('mouseout', () => {
            div.style.backgroundColor = 'red'
            div.style.color = 'black'
            div.innerHTML = '撒大声地撒'
        })
    </script>
</body>

keydown 事件 鼠标移至 HTML 元素上方或移出元素时触发的事件


<body>

    <div>我是默认的div</div>
    <input type="text" class="input">
    <script>
        // 获取 div input
        let div = document.querySelector("div")
        let input = document.querySelector(".input")
        // 输入框按下 Enter 触发-->keydown 事件 改变div.innerHTML 内容
        input.addEventListener("keydown", (e) => {
            // e.key === "Enter" 用于检测是否按下了 Enter 键。
            if (e.key === "Enter") {
                div.innerHTML = "我触发了"
            }
        })
    </script>
</body>

停止计时器

<body>

    <button class="a">点击停止定时器</button>
    <button class="b">点击开始定时器</button>
    <script>
        // 没2秒触发的定时器存到变量 dsq中
        let dsq = setInterval(() => {
            console.log("我执行了");
        }, 2000)
        //  获取这个按钮
        let but = document.querySelector(".a")
        //  事件
        but.addEventListener("click", () => {
            // 在点击按钮以后 停止定时器
            clearInterval(dsq) // 停止定时器 必须给出停止定时器的名字
        })
        let but2 = document.querySelector(".b")
        but2.addEventListener("click", () => {
            setInterval(() => {
                console.log("我又开始执行了");
            }, 2000)
        })
    </script>
</body>

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,084评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,623评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,450评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,322评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,370评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,274评论 1 300
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,126评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,980评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,414评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,599评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,773评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,470评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,080评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,713评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,852评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,865评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,689评论 2 354

推荐阅读更多精彩内容