日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

javaScript常用案例

發(fā)布時間:2023/12/18 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 javaScript常用案例 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

javaScript常用案例

    • 案例1:點擊按鈕彈出彈框
    • 案例2:點擊按鈕控制臺輸出內(nèi)容
    • 案例3:點擊按鈕顯示當(dāng)前時間
    • 案例4:點擊按鈕切換圖片
    • 案例5:分時間問候顯示不同圖片
    • 案例6:隱藏密碼功能
    • 案例7:關(guān)閉淘寶二維碼
    • 案例8:循環(huán)精靈圖
    • 案例9:顯示隱藏文本框
    • 案例10:仿新浪,注冊登錄界面
    • 案例11:排他思想:點擊按鈕切換背景顏色:排除其他元素,僅給一個元素添加樣式
    • 案例12:百度換膚效果:點擊圖片將背景切換與圖片相同
    • 案例13:表格隔行變色效果
    • 案例14:全選,反選
    • 案例15:tab欄切換
    • 案例16:新浪下拉菜單
    • 案例17:留言添加操作
    • 案例18:留言刪除操作
    • 案例19:動態(tài)生成表格
    • 案例20:模擬京東按鍵輸入內(nèi)容
    • 案例21:模擬京東快遞單號查詢案例
    • 案例22:倒計時效果
    • 案例23:發(fā)送短信案例
    • 案例24:5秒之后自動跳轉(zhuǎn)頁面
    • 案例25:發(fā)送短信案例
    • 案例26:拖動的模態(tài)框
    • 案例27:仿京東放大鏡效果
    • 案例28:仿淘寶側(cè)邊欄

案例1:點擊按鈕彈出彈框

<body><button id="btn">唐伯虎</button><script>// 點擊一個按鈕,彈出對話框//(1) 事件源 事件被觸發(fā)的對象 誰 按鈕var btn = document.getElementById('btn');//(2) 事件類型 如何觸發(fā) 什么事件 比如鼠標(biāo)點擊(onclick) 還是鼠標(biāo)經(jīng)過 還是鍵盤按下//(3) 事件處理程序 通過一個函數(shù)賦值的方式 完成btn.onclick = function() {alert('點秋香');}</script> </body>

案例2:點擊按鈕控制臺輸出內(nèi)容

<body><div>點我呀</div><script>// 點擊div 控制臺輸出 我被選中了// 獲取事件源var div = document.querySelector('div');// 注冊事件,添加事件處理程序div.onclick = function() {console.log('小樣兒,還真敢點');}</script> </body>

案例3:點擊按鈕顯示當(dāng)前時間

<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title><style>div,p {width: 300px;height: 30px;line-height: 30px;color: #fff;background-color: pink;}</style> </head> <body><button>顯示當(dāng)前系統(tǒng)時間</button><div>某個時間</div><p>1123</p><script>// 當(dāng)我們點擊了按鈕, div里面的文字會發(fā)生變化// 1. 獲取元素 var btn = document.querySelector('button');var div = document.querySelector('div');// 2.注冊事件btn.onclick = function() {// div.innerText = '2019-6-6';div.innerHTML = getDate();}function getDate() {var date = new Date();// 我們寫一個 2019年 5月 1日 星期三var year = date.getFullYear();var month = date.getMonth() + 1;var dates = date.getDate();var arr = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];var day = date.getDay();return '今天是:' + year + '年' + month + '月' + dates + '日 ' + arr[day];}// 我們元素可以不用添加事件var p = document.querySelector('p');p.innerHTML = getDate();</script> </body>

案例4:點擊按鈕切換圖片

<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title><style>img {width: 300px;}</style> </head><body><button id="ldh">劉德華</button><button id="zxy">張學(xué)友</button> <br><img src="images/ldh.jpg" alt="" title="劉德華"><script>// 修改元素屬性 src// 1. 獲取元素var ldh = document.getElementById('ldh');var zxy = document.getElementById('zxy');var img = document.querySelector('img');// 2. 注冊事件 處理程序zxy.onclick = function() {img.src = 'images/zxy.jpg';img.title = '張學(xué)友';}ldh.onclick = function() {img.src = 'images/ldh.jpg';img.title = '劉德華';}</script> </body>

案例5:分時間問候顯示不同圖片

<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title><style>img {width: 300px;}</style> </head><body><img src="images/s.gif" alt=""><div>上午好</div><script>// 根據(jù)系統(tǒng)不同時間來判斷,所以需要用到日期內(nèi)置對象// 利用多分支語句來設(shè)置不同的圖片// 需要一個圖片,并且根據(jù)時間修改圖片,就需要用到操作元素src屬性// 需要一個div元素,顯示不同問候語,修改元素內(nèi)容即可// 1.獲取元素var img = document.querySelector('img');var div = document.querySelector('div');// 2. 得到當(dāng)前的小時數(shù)var date = new Date();var h = date.getHours();// 3. 判斷小時數(shù)改變圖片和文字信息if (h < 12) {img.src = 'images/s.gif';div.innerHTML = '親,上午好,好好寫代碼';} else if (h < 18) {img.src = 'images/x.gif';div.innerHTML = '親,下午好,好好寫代碼';} else {img.src = 'images/w.gif';div.innerHTML = '親,晚上好,好好寫代碼';}</script> </body>

案例6:隱藏密碼功能

<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title><style>.box {position: relative;width: 400px;border-bottom: 1px solid #ccc;margin: 100px auto;}.box input {width: 370px;height: 30px;border: 0;outline: none;}.box img {position: absolute;top: 2px;right: 2px;width: 24px;}</style> </head><body><div class="box"><label for=""><img src="images/close.png" alt="" id="eye"></label><input type="password" name="" id="pwd"></div><script>// 1. 獲取元素var eye = document.getElementById('eye');var pwd = document.getElementById('pwd');// 2. 注冊事件 處理程序var flag = 0;eye.onclick = function() {// 點擊一次之后, flag 一定要變化if (flag == 0) {pwd.type = 'text';eye.src = 'images/open.png';flag = 1; // 賦值操作} else {pwd.type = 'password';eye.src = 'images/close.png';flag = 0;}}</script> </body>

案例7:關(guān)閉淘寶二維碼

<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title><style>.box {position: relative;width: 74px;height: 88px;border: 1px solid #ccc;margin: 100px auto;font-size: 12px;text-align: center;color: #f40;/* display: block; */}.box img {width: 60px;margin-top: 5px;}.close-btn {position: absolute;top: -1px;left: -16px;width: 14px;height: 14px;border: 1px solid #ccc;line-height: 14px;font-family: Arial, Helvetica, sans-serif;cursor: pointer;}</style> </head><body><div class="box">淘寶二維碼<img src="images/tao.png" alt=""><!-- 關(guān)閉按鈕 --><i class="close-btn">×</i></div><script>// 1. 獲取元素 var btn = document.querySelector('.close-btn');var box = document.querySelector('.box');// 2.注冊事件 程序處理btn.onclick = function() {box.style.display = 'none';}</script> </body>

案例8:循環(huán)精靈圖

<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title><style>* {margin: 0;padding: 0;}li {list-style-type: none;}.box {width: 250px;margin: 100px auto;}.box li {float: left;width: 24px;height: 24px;background-color: pink;margin: 15px;background: url(images/sprite.png) no-repeat;}</style> </head><body><div class="box"><ul><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul></div><script>// 1. 獲取元素 所有的小li var lis = document.querySelectorAll('li');for (var i = 0; i < lis.length; i++) {// 讓索引號 乘以 44 就是每個li 的背景y坐標(biāo) index就是我們的y坐標(biāo)var index = i * 44;lis[i].style.backgroundPosition = '0 -' + index + 'px';}</script> </body>

案例9:顯示隱藏文本框

<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title><style>input {color: #999;}</style> </head><body><input type="text" value="手機"><script>// 1.獲取元素var text = document.querySelector('input');// 2.注冊事件 獲得焦點事件 onfocus text.onfocus = function() {// console.log('得到了焦點');if (this.value === '手機') {this.value = '';}// 獲得焦點需要把文本框里面的文字顏色變黑this.style.color = '#333';}// 3. 注冊事件 失去焦點事件 onblurtext.onblur = function() {// console.log('失去了焦點');if (this.value === '') {this.value = '手機';}// 失去焦點需要把文本框里面的文字顏色變淺色this.style.color = '#999';}</script></body>

案例10:仿新浪,注冊登錄界面

<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title><style>div {width: 600px;margin: 100px auto;}.message {display: inline-block;font-size: 12px;color: #999;background: url(images/mess.png) no-repeat left center;padding-left: 20px;}.wrong {color: red;background-image: url(images/wrong.png);}.right {color: green;background-image: url(images/right.png);}</style> </head><body><div class="register"><input type="password" class="ipt"><p class="message">請輸入6~16位密碼</p></div><script>// 首先判斷的事件是表單失去焦點 onblur// 如果輸入正確則提示正確的信息顏色為綠色小圖標(biāo)變化// 如果輸入不是6到16位,則提示錯誤信息顏色為紅色 小圖標(biāo)變化// 因為里面變化樣式較多,我們采取className修改樣式// 1.獲取元素// 獲取表單var ipt = document.querySelector('.ipt');// 獲取提示信息var message = document.querySelector('.message');//2. 注冊事件 失去焦點ipt.onblur = function() {// 根據(jù)表單里面值的長度 ipt.value.lengthif (this.value.length < 6 || this.value.length > 16) {console.log('錯誤');message.className = 'message wrong';message.innerHTML = '您輸入的位數(shù)不對要求6~16位';} else {message.className = 'message right';message.innerHTML = '您輸入的正確';}}</script> </body>

案例11:排他思想:點擊按鈕切換背景顏色:排除其他元素,僅給一個元素添加樣式

首先將所有元素樣式清空,再設(shè)置單個元素

<body><button>按鈕1</button><button>按鈕2</button><button>按鈕3</button><button>按鈕4</button><button>按鈕5</button><script>// 1. 獲取所有按鈕元素var btns = document.getElementsByTagName('button');// btns得到的是偽數(shù)組 里面的每一個元素 btns[i]for (var i = 0; i < btns.length; i++) {btns[i].onclick = function() {// (1) 我們先把所有的按鈕背景顏色去掉 干掉所有人for (var i = 0; i < btns.length; i++) {btns[i].style.backgroundColor = '';}// (2) 然后才讓當(dāng)前的元素背景顏色為pink 留下我自己this.style.backgroundColor = 'pink';}}//2. 首先先排除其他人,然后才設(shè)置自己的樣式 這種排除其他人的思想我們成為排他思想</script> </body>

案例12:百度換膚效果:點擊圖片將背景切換與圖片相同

<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title><style>* {margin: 0;padding: 0;}body {background: url(images/1.jpg) no-repeat center top;}li {list-style: none;}.baidu {overflow: hidden;margin: 100px auto;background-color: #fff;width: 410px;padding-top: 3px;}.baidu li {float: left;margin: 0 1px;cursor: pointer;}.baidu img {width: 100px;}</style> </head><body><ul class="baidu"><li><img src="images/1.jpg"></li><li><img src="images/2.jpg"></li><li><img src="images/3.jpg"></li><li><img src="images/4.jpg"></li></ul><script>// 1. 獲取元素 var imgs = document.querySelector('.baidu').querySelectorAll('img');// console.log(imgs);// 2. 循環(huán)注冊事件 for (var i = 0; i < imgs.length; i++) {imgs[i].onclick = function() {// this.src 就是我們點擊圖片的路徑 images/2.jpg// console.log(this.src);// 把這個路徑 this.src 給body 就可以了document.body.style.backgroundImage = 'url(' + this.src + ')';}}</script> </body>

案例13:表格隔行變色效果

  • 用到新的鼠標(biāo)事件 鼠標(biāo)經(jīng)過 onmouseover 鼠標(biāo)離開 onmouseout
  • 核心思路:鼠標(biāo)經(jīng)過 tr 行,當(dāng)前的行變背景顏色, 鼠標(biāo)離開去掉當(dāng)前的背景顏色
  • 注意: 第一行(thead里面的行)不需要變換顏色,因此我們獲取的是 tbody 里面的行
  • <head><style>.bg {background-color: pink;}</style> </head> <body></table><script>// 1.獲取元素 獲取的是 tbody 里面所有的行var trs = document.querySelector('tbody').querySelectorAll('tr');// 2. 利用循環(huán)綁定注冊事件for (var i = 0; i < trs.length; i++) {// 3. 鼠標(biāo)經(jīng)過事件 onmouseovertrs[i].onmouseover = function() {// console.log(11);this.className = 'bg';}// 4. 鼠標(biāo)離開事件 onmouseouttrs[i].onmouseout = function() {this.className = '';}}</script> </body>

    案例14:全選,反選

    全選和取消全選做法: 讓下面所有復(fù)選框的checked屬性(選中狀態(tài)) 跟隨 全選按鈕即可
    下面復(fù)選框需要全部選中, 上面全選才能選中做法: 給下面所有復(fù)選框綁定點擊事件,每次點擊,都要循環(huán)查看下面所有的復(fù)選框是否有沒選中的,如果有一個沒選中的, 上面全選就不選中。
    可以設(shè)置一個變量,來控制全選是否選中

    <script>// 1. 全選和取消全選做法: 讓下面所有復(fù)選框的checked屬性(選中狀態(tài)) 跟隨 全選按鈕即可// 獲取元素var j_cbAll = document.getElementById('j_cbAll'); // 全選按鈕var j_tbs = document.getElementById('j_tb').getElementsByTagName('input'); // 下面所有的復(fù)選框// 注冊事件j_cbAll.onclick = function() {// this.checked 它可以得到當(dāng)前復(fù)選框的選中狀態(tài)如果是true 就是選中,如果是false 就是未選中console.log(this.checked);for (var i = 0; i < j_tbs.length; i++) {j_tbs[i].checked = this.checked;}}// 2. 下面復(fù)選框需要全部選中, 上面全選才能選中做法: 給下面所有復(fù)選框綁定點擊事件,每次點擊,都要循環(huán)查看下面所有的復(fù)選框是否有沒選中的,如果有一個沒選中的, 上面全選就不選中。for (var i = 0; i < j_tbs.length; i++) {j_tbs[i].onclick = function() {// flag 控制全選按鈕是否選中var flag = true;// 每次點擊下面的復(fù)選框都要循環(huán)檢查者4個小按鈕是否全被選中,有一個未選中就是falsefor (var i = 0; i < j_tbs.length; i++) {if (!j_tbs[i].checked) {flag = false;break; // 退出for循環(huán) 這樣可以提高執(zhí)行效率 因為只要有一個沒有選中,剩下的就無需循環(huán)判斷了}}j_cbAll.checked = flag;}}</script>

    案例15:tab欄切換

    <body><div class="tab"><div class="tab_list"><ul><li class="current">商品介紹</li><li>規(guī)格與包裝</li><li>售后保障</li><li>商品評價(50000)</li><li>手機社區(qū)</li></ul></div><div class="tab_con"><div class="item" style="display: block;">商品介紹模塊內(nèi)容</div><div class="item">規(guī)格與包裝模塊內(nèi)容</div><div class="item">售后保障模塊內(nèi)容</div><div class="item">商品評價(50000)模塊內(nèi)容</div><div class="item">手機社區(qū)模塊內(nèi)容</div></div></div><script>// 獲取元素var tab_list = document.querySelector('.tab_list');var lis = tab_list.querySelectorAll('li');var items = document.querySelectorAll('.item');// for循環(huán)綁定點擊事件for (var i = 0; i < lis.length; i++) {// 開始給5個小li 設(shè)置索引號 lis[i].setAttribute('index', i);lis[i].onclick = function() {// 1. 上的模塊選項卡,點擊某一個,當(dāng)前這一個底色會是紅色,其余不變(排他思想) 修改類名的方式// 干掉所有人 其余的li清除 class 這個類for (var i = 0; i < lis.length; i++) {lis[i].className = '';}// 留下我自己 this.className = 'current';// 2. 下面的顯示內(nèi)容模塊var index = this.getAttribute('index');console.log(index);// 干掉所有人 讓其余的item 這些div 隱藏for (var i = 0; i < items.length; i++) {items[i].style.display = 'none';}// 留下我自己 讓對應(yīng)的item 顯示出來items[index].style.display = 'block';}}</script> </body>

    案例16:新浪下拉菜單

    <body><ul class="nav"><li><a href="#">微博</a><ul><li><a href="">私信</a></li><li><a href="">評論</a></li><li><a href="">@我</a></li></ul></li><li><a href="#">微博</a><ul><li><a href="">私信</a></li><li><a href="">評論</a></li><li><a href="">@我</a></li></ul></li><li><a href="#">微博</a><ul><li><a href="">私信</a></li><li><a href="">評論</a></li><li><a href="">@我</a></li></ul></li><li><a href="#">微博</a><ul><li><a href="">私信</a></li><li><a href="">評論</a></li><li><a href="">@我</a></li></ul></li></ul><script>// 1. 獲取元素var nav = document.querySelector('.nav');var lis = nav.children; // 得到4個小li// 2.循環(huán)注冊事件for (var i = 0; i < lis.length; i++) {lis[i].onmouseover = function() {this.children[1].style.display = 'block';}lis[i].onmouseout = function() {this.children[1].style.display = 'none';}}</script> </body>

    案例17:留言添加操作

    <body><textarea name="" id=""></textarea><button>發(fā)布</button><ul></ul><script>// 1. 獲取元素var btn = document.querySelector('button');var text = document.querySelector('textarea');var ul = document.querySelector('ul');// 2. 注冊事件btn.onclick = function() {if (text.value == '') {alert('您沒有輸入內(nèi)容');return false;} else {// console.log(text.value);// (1) 創(chuàng)建元素var li = document.createElement('li');// 先有l(wèi)i 才能賦值//留言顯示相應(yīng)內(nèi)容li.innerHTML = text.value;// (2) 添加元素// ul.appendChild(li);//最新的留言置頂ul.insertBefore(li, ul.children[0]);}}</script> </body>

    案例18:留言刪除操作

    <body><textarea name="" id=""></textarea><button>發(fā)布</button><ul></ul><script>// 1. 獲取元素var btn = document.querySelector('button');var text = document.querySelector('textarea');var ul = document.querySelector('ul');// 2. 注冊事件btn.onclick = function() {if (text.value == '') {alert('您沒有輸入內(nèi)容');return false;} else {// console.log(text.value);// (1) 創(chuàng)建元素var li = document.createElement('li');// 先有l(wèi)i 才能賦值li.innerHTML = text.value + "<a href='javascript:;'>刪除</a>";// (2) 添加元素// ul.appendChild(li);ul.insertBefore(li, ul.children[0]);// (3) 刪除元素 刪除的是當(dāng)前鏈接的li 它的父親var as = document.querySelectorAll('a');for (var i = 0; i < as.length; i++) {as[i].onclick = function() {// node.removeChild(child); 刪除的是 li 當(dāng)前a所在的li this.parentNode;ul.removeChild(this.parentNode);}}}}</script> </body>

    案例19:動態(tài)生成表格

    <body><table cellspacing="0"><thead><tr><th>姓名</th><th>科目</th><th>成績</th><th>操作</th></tr></thead><tbody></tbody></table><script>// 1.先去準(zhǔn)備好學(xué)生的數(shù)據(jù)var datas = [{name: '魏瓔珞',subject: 'JavaScript',score: 100}, {name: '弘歷',subject: 'JavaScript',score: 98}, {name: '傅恒',subject: 'JavaScript',score: 99}, {name: '明玉',subject: 'JavaScript',score: 88}, {name: '大豬蹄子',subject: 'JavaScript',score: 0}];// 2. 往tbody 里面創(chuàng)建行: 有幾個人(通過數(shù)組的長度)我們就創(chuàng)建幾行var tbody = document.querySelector('tbody');for (var i = 0; i < datas.length; i++) { // 外面的for循環(huán)管行 tr// 1. 創(chuàng)建 tr行var tr = document.createElement('tr');tbody.appendChild(tr);// 2. 行里面創(chuàng)建單元格(跟數(shù)據(jù)有關(guān)系的3個單元格) td 單元格的數(shù)量取決于每個對象里面的屬性個數(shù) for循環(huán)遍歷對象 datas[i]for (var k in datas[i]) { // 里面的for循環(huán)管列 td// 創(chuàng)建單元格 var td = document.createElement('td');// 把對象里面的屬性值 datas[i][k] 給 td // console.log(datas[i][k]);td.innerHTML = datas[i][k];tr.appendChild(td);}// 3. 創(chuàng)建有刪除2個字的單元格 var td = document.createElement('td');td.innerHTML = '<a href="javascript:;">刪除 </a>';tr.appendChild(td);}// 4. 刪除操作 開始 var as = document.querySelectorAll('a');for (var i = 0; i < as.length; i++) {as[i].onclick = function() {// 點擊a 刪除 當(dāng)前a 所在的行(鏈接的爸爸的爸爸) node.removeChild(child) tbody.removeChild(this.parentNode.parentNode)}}// for(var k in obj) {// k 得到的是屬性名// obj[k] 得到是屬性值// }</script> </body>

    案例20:模擬京東按鍵輸入內(nèi)容

    <body><input type="text"><script>// 核心思路: 檢測用戶是否按下了s 鍵,如果按下s 鍵,就把光標(biāo)定位到搜索框里面// 使用鍵盤事件對象里面的keyCode 判斷用戶按下的是否是s鍵// 搜索框獲得焦點: 使用 js 里面的 focus() 方法var search = document.querySelector('input');document.addEventListener('keyup', function(e) {// console.log(e.keyCode);if (e.keyCode === 83) {search.focus();}})</script> </body>

    案例21:模擬京東快遞單號查詢案例

    keydown和keypress在文本框里面的特點:他們兩個事件觸發(fā)的時候,文字還沒有落入文本框中。

  • 快遞單號輸入內(nèi)容時, 上面的大號字體盒子(con)顯示(這里面的文字
  • 同時把快遞單號里面的值(value)獲取過來賦值給 con盒子(innerText)做為內(nèi)容
  • 如果快遞單號里面內(nèi)容為空,則隱藏大號字體盒子(con)盒子
  • 注意: keydown 和 keypress 在文本框里面的特點: 他們兩個事件觸發(fā)的時候,文字還沒有落入文本框中。
  • keyup事件觸發(fā)的時候, 文字已經(jīng)落入文本框里面了
  • 當(dāng)我們失去焦點,就隱藏這個con盒子
  • 當(dāng)我們獲得焦點,并且文本框內(nèi)容不為空,就顯示這個con盒子
  • <body><div class="search"><div class="con">123</div><input type="text" placeholder="請輸入您的快遞單號" class="jd"></div><script>// 快遞單號輸入內(nèi)容時, 上面的大號字體盒子(con)顯示(這里面的字號更大)// 表單檢測用戶輸入: 給表單添加鍵盤事件// 同時把快遞單號里面的值(value)獲取過來賦值給 con盒子(innerText)做為內(nèi)容// 如果快遞單號里面內(nèi)容為空,則隱藏大號字體盒子(con)盒子var con = document.querySelector('.con');var jd_input = document.querySelector('.jd');jd_input.addEventListener('keyup', function() {// console.log('輸入內(nèi)容啦');if (this.value == '') {con.style.display = 'none';} else {con.style.display = 'block';con.innerText = this.value;}})// 當(dāng)我們失去焦點,就隱藏這個con盒子jd_input.addEventListener('blur', function() {con.style.display = 'none';})// 當(dāng)我們獲得焦點,就顯示這個con盒子jd_input.addEventListener('focus', function() {if (this.value !== '') {con.style.display = 'block';}})</script> </body>

    案例22:倒計時效果

  • 這個倒計時是不斷變化的,因此需要定時器來自動變化(setInterval)
  • 三個黑色盒子里面分別存放時分秒
  • 三個黑色盒子利用innerHTML 放入計算的小時分鐘秒數(shù)
  • 第一次執(zhí)行也是間隔毫秒數(shù),因此剛刷新頁面會有空白
  • 最好采取封裝函數(shù)的方式, 這樣可以先調(diào)用一次這個函數(shù),防止剛開始刷新頁面有空白問題
  • <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title><style>div {margin: 200px;}span {display: inline-block;width: 40px;height: 40px;background-color: #333;font-size: 20px;color: #fff;text-align: center;line-height: 40px;}</style> </head> <body><div><span class="hour">1</span><span class="minute">2</span><span class="second">3</span></div><script>// 1. 獲取元素 var hour = document.querySelector('.hour'); // 小時的黑色盒子var minute = document.querySelector('.minute'); // 分鐘的黑色盒子var second = document.querySelector('.second'); // 秒數(shù)的黑色盒子var inputTime = +new Date('2019-5-1 18:00:00'); // 返回的是用戶輸入時間總的毫秒數(shù)countDown(); // 我們先調(diào)用一次這個函數(shù),防止第一次刷新頁面有空白 // 2. 開啟定時器setInterval(countDown, 1000);function countDown() {var nowTime = +new Date(); // 返回的是當(dāng)前時間總的毫秒數(shù)var times = (inputTime - nowTime) / 1000; // times是剩余時間總的秒數(shù) var h = parseInt(times / 60 / 60 % 24); //時h = h < 10 ? '0' + h : h;hour.innerHTML = h; // 把剩余的小時給 小時黑色盒子var m = parseInt(times / 60 % 60); // 分m = m < 10 ? '0' + m : m;minute.innerHTML = m;var s = parseInt(times % 60); // 當(dāng)前的秒s = s < 10 ? '0' + s : s;second.innerHTML = s;}</script> </body>

    案例23:發(fā)送短信案例

    <body>手機號碼: <input type="number"> <button>發(fā)送</button><script>// 按鈕點擊之后,會禁用 disabled 為true // 同時按鈕里面的內(nèi)容會變化, 注意 button 里面的內(nèi)容通過 innerHTML修改// 里面秒數(shù)是有變化的,因此需要用到定時器// 定義一個變量,在定時器里面,不斷遞減// 如果變量為0 說明到了時間,我們需要停止定時器,并且復(fù)原按鈕初始狀態(tài)var btn = document.querySelector('button');var time = 3; // 定義剩下的秒數(shù)btn.addEventListener('click', function() {btn.disabled = true; //禁用var timer = setInterval(function() {if (time == 0) {// 清除定時器和復(fù)原按鈕clearInterval(timer);btn.disabled = false;btn.innerHTML = '發(fā)送';} else {btn.innerHTML = '還剩下' + time + '秒';time--;}}, 1000);})</script> </body>

    案例24:5秒之后自動跳轉(zhuǎn)頁面

    <body><button>點擊</button><div></div><script>var btn = document.querySelector('button');var div = document.querySelector('div');btn.addEventListener('click', function() {// console.log(location.href);location.href = 'http://www.itcast.cn';})var timer = 5;setInterval(function() {if (timer == 0) {location.href = 'http://www.itcast.cn';} else {div.innerHTML = '您將在' + timer + '秒鐘之后跳轉(zhuǎn)到首頁';timer--;}}, 1000);</script> </body>

    案例25:發(fā)送短信案例

    location.search取到數(shù)據(jù)

    <body><div></div><script>console.log(location.search); // ?uname=andy// 1.先去掉? substr('起始的位置',截取幾個字符);var params = location.search.substr(1); // uname=andyconsole.log(params);// 2. 利用=把字符串分割為數(shù)組 split('=');var arr = params.split('=');console.log(arr); // ["uname", "ANDY"]var div = document.querySelector('div');// 3.把數(shù)據(jù)寫入div中div.innerHTML = arr[1] + '歡迎您';</script> </body>

    案例26:拖動的模態(tài)框

    彈出框,我們也稱為模態(tài)框。
    功能:

  • 點擊彈出層, 會彈出模態(tài)框, 并且顯示灰色半透明的遮擋層。
  • 點擊關(guān)閉按鈕,可以關(guān)閉模態(tài)框,并且同時關(guān)閉灰色半透明遮擋層。
  • 鼠標(biāo)放到模態(tài)框最上面一行,可以按住鼠標(biāo)拖拽模態(tài)框在頁面中移動。
  • 鼠標(biāo)松開,可以停止拖動模態(tài)框移動。
  • 實現(xiàn)步驟:

  • 點擊彈出層, 模態(tài)框和遮擋層就會顯示出來 display:block;
  • 點擊關(guān)閉按鈕,模態(tài)框和遮擋層就會隱藏起來 display:none;
  • 在頁面中拖拽的原理: 鼠標(biāo)按下并且移動, 之后松開鼠標(biāo)
  • 觸發(fā)事件是鼠標(biāo)按下 mousedown, 鼠標(biāo)移動mousemove 鼠標(biāo)松開 mouseup
  • 拖拽過程: 鼠標(biāo)移動過程中,獲得最新的值賦值給模態(tài)框的left和top值, 這樣模態(tài)框可以跟著鼠標(biāo)走了
  • 鼠標(biāo)按下觸發(fā)的事件源是 最上面一行,就是 id 為 title
  • 鼠標(biāo)的坐標(biāo) 減去 鼠標(biāo)在盒子內(nèi)的坐標(biāo), 才是模態(tài)框真正的位置。
  • 鼠標(biāo)按下,我們要得到鼠標(biāo)在盒子的坐標(biāo)。
  • 鼠標(biāo)移動,就讓模態(tài)框的坐標(biāo) 設(shè)置為 : 鼠標(biāo)坐標(biāo) 減去盒子坐標(biāo)即可,注意移動事件寫到按下事件里面。
    10.鼠標(biāo)松開,就停止拖拽,就是可以讓鼠標(biāo)移動事件解除
  • <body><div class="login-header"><a id="link" href="javascript:;">點擊,彈出登錄框</a></div><div id="login" class="login"><div id="title" class="login-title">登錄會員<span><a id="closeBtn" href="javascript:void(0);" class="close-login">關(guān)閉</a></span></div><div class="login-input-content"><div class="login-input"><label>用戶名:</label><input type="text" placeholder="請輸入用戶名" name="info[username]" id="username" class="list-input"></div><div class="login-input"><label>登錄密碼:</label><input type="password" placeholder="請輸入登錄密碼" name="info[password]" id="password" class="list-input"></div></div><div id="loginBtn" class="login-button"><a href="javascript:void(0);" id="login-button-submit">登錄會員</a></div></div><!-- 遮蓋層 --><div id="bg" class="login-bg"></div><script>// 1. 獲取元素var login = document.querySelector('.login');var mask = document.querySelector('.login-bg');var link = document.querySelector('#link');var closeBtn = document.querySelector('#closeBtn');var title = document.querySelector('#title');// 2. 點擊彈出層這個鏈接 link 讓mask 和login 顯示出來link.addEventListener('click', function() {mask.style.display = 'block';login.style.display = 'block';})// 3. 點擊 closeBtn 就隱藏 mask 和 login closeBtn.addEventListener('click', function() {mask.style.display = 'none';login.style.display = 'none';})// 4. 開始拖拽// (1) 當(dāng)我們鼠標(biāo)按下, 就獲得鼠標(biāo)在盒子內(nèi)的坐標(biāo)title.addEventListener('mousedown', function(e) {var x = e.pageX - login.offsetLeft;var y = e.pageY - login.offsetTop;// (2) 鼠標(biāo)移動的時候,把鼠標(biāo)在頁面中的坐標(biāo),減去 鼠標(biāo)在盒子內(nèi)的坐標(biāo)就是模態(tài)框的left和top值document.addEventListener('mousemove', move)function move(e) {login.style.left = e.pageX - x + 'px';login.style.top = e.pageY - y + 'px';}// (3) 鼠標(biāo)彈起,就讓鼠標(biāo)移動事件移除document.addEventListener('mouseup', function() {document.removeEventListener('mousemove', move);})})</script> </body>

    案例27:仿京東放大鏡效果

  • 黃色的遮擋層跟隨鼠標(biāo)功能。
  • 把鼠標(biāo)坐標(biāo)給遮擋層不合適。因為遮擋層坐標(biāo)以父盒子為準(zhǔn)。
  • 首先是獲得鼠標(biāo)在盒子的坐標(biāo)。
  • 之后把數(shù)值給遮擋層做為left 和top值。
  • 此時用到鼠標(biāo)移動事件,但是還是在小圖片盒子內(nèi)移動。
  • 發(fā)現(xiàn),遮擋層位置不對,需要再減去盒子自身高度和寬度的一半。
  • 遮擋層不能超出小圖片盒子范圍。
  • 如果小于零,就把坐標(biāo)設(shè)置為0
  • 如果大于遮擋層最大的移動距離,就把坐標(biāo)設(shè)置為最大的移動距離
  • 遮擋層的最大移動距離: 小圖片盒子寬度 減去 遮擋層盒子寬度
  • window.addEventListener('load', function() {var preview_img = document.querySelector('.preview_img');var mask = document.querySelector('.mask');var big = document.querySelector('.big');// 1. 當(dāng)我們鼠標(biāo)經(jīng)過 preview_img 就顯示和隱藏 mask 遮擋層 和 big 大盒子preview_img.addEventListener('mouseover', function() {mask.style.display = 'block';big.style.display = 'block';})preview_img.addEventListener('mouseout', function() {mask.style.display = 'none';big.style.display = 'none';})// 2. 鼠標(biāo)移動的時候,讓黃色的盒子跟著鼠標(biāo)來走preview_img.addEventListener('mousemove', function(e) {// (1). 先計算出鼠標(biāo)在盒子內(nèi)的坐標(biāo)var x = e.pageX - this.offsetLeft;var y = e.pageY - this.offsetTop;// console.log(x, y);// (2) 減去盒子高度 300的一半 是 150 就是我們mask 的最終 left 和top值了// (3) 我們mask 移動的距離var maskX = x - mask.offsetWidth / 2;var maskY = y - mask.offsetHeight / 2;// (4) 如果x 坐標(biāo)小于了0 就讓他停在0 的位置// 遮擋層的最大移動距離var maskMax = preview_img.offsetWidth - mask.offsetWidth;if (maskX <= 0) {maskX = 0;} else if (maskX >= maskMax) {maskX = maskMax;}if (maskY <= 0) {maskY = 0;} else if (maskY >= maskMax) {maskY = maskMax;}mask.style.left = maskX + 'px';mask.style.top = maskY + 'px';// 3. 大圖片的移動距離 = 遮擋層移動距離 * 大圖片最大移動距離 / 遮擋層的最大移動距離// 大圖var bigIMg = document.querySelector('.bigImg');// 大圖片最大移動距離var bigMax = bigIMg.offsetWidth - big.offsetWidth;// 大圖片的移動距離 X Yvar bigX = maskX * bigMax / maskMax;var bigY = maskY * bigMax / maskMax;bigIMg.style.left = -bigX + 'px';bigIMg.style.top = -bigY + 'px';}) })

    案例28:仿淘寶側(cè)邊欄

    功能分析:

  • 需要用到頁面滾動事件 scroll 因為是頁面滾動,所以事件源是 document
  • 滾動到某個位置,就是判斷頁面被卷去的上部值。
  • 頁面被卷去的頭部:可以通過window.pageYOffset 獲得 如果是被卷去的左側(cè) window.pageXOffset
  • 注意,元素被卷去的頭部是 element.scrollTop , 如果是頁面被卷去的頭部 則是 window.pageYOffset
  • 其實這個值 可以通過盒子的 offsetTop 可以得到,如果大于等于這個值,就可以讓盒子固定定位了
  • <body><div class="slider-bar"><span class="goBack">返回頂部</span></div><div class="header w">頭部區(qū)域</div><div class="banner w">banner區(qū)域</div><div class="main w">主體部分</div><script>//1. 獲取元素var sliderbar = document.querySelector('.slider-bar');var banner = document.querySelector('.banner');// banner.offestTop 就是被卷去頭部的大小 一定要寫到滾動的外面var bannerTop = banner.offsetTop// 當(dāng)我們側(cè)邊欄固定定位之后應(yīng)該變化的數(shù)值var sliderbarTop = sliderbar.offsetTop - bannerTop;// 獲取main 主體元素var main = document.querySelector('.main');var goBack = document.querySelector('.goBack');var mainTop = main.offsetTop;// 2. 頁面滾動事件 scrolldocument.addEventListener('scroll', function() {// console.log(11);// window.pageYOffset 頁面被卷去的頭部// console.log(window.pageYOffset);// 3 .當(dāng)我們頁面被卷去的頭部大于等于了 172 此時 側(cè)邊欄就要改為固定定位if (window.pageYOffset >= bannerTop) {sliderbar.style.position = 'fixed';sliderbar.style.top = sliderbarTop + 'px';} else {sliderbar.style.position = 'absolute';sliderbar.style.top = '300px';}// 4. 當(dāng)我們頁面滾動到main盒子,就顯示 goback模塊if (window.pageYOffset >= mainTop) {goBack.style.display = 'block';} else {goBack.style.display = 'none';}})</script> </body>

    案例29:輪播圖制作

    總結(jié)

    以上是生活随笔為你收集整理的javaScript常用案例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。