當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
JavaScript学习笔记(3)
生活随笔
收集整理的這篇文章主要介紹了
JavaScript学习笔记(3)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- Web APIs
- 什么是DOM?
- DOM樹
- 如何獲取網頁頁面元素?
- 根據id獲取元素 getElementById
- 根據標簽名獲取元素 getElementsByTagName
- 根據類名獲取某些元素集合 getElementsByClassName 通用選擇器querySelector querySelectorAll(既能選擇id,也能選擇類和通用標簽)(加#表示選擇id,加.表示選擇類)
- 獲取特殊元素body(document.body)html(document.documentElement)
- 事件概述(事件三要素:事件源 事件類型 事件處理程序)
- 執行事件的步驟 常見鼠標事件
- 操作元素
- 改變元素內容 innerText和innerHtml
- innerText和innerHtml的區別(innerHtml顯示時支持html語法,讀取元素內容時能保留html代碼)(所以以后一般只用innerHtml就好了)
- 通過注冊事件來改變元素屬性(劉德華與張學友圖片切換)
- 案例:根據系統不同時間段顯示不同問候語和圖片
- 表單元素的屬性操作(表單操作比較特殊,跟普通元素不同)type value checked selected disabled(this)
- 案例:仿京東顯示密碼
- 修改元素樣式屬性
- 行內樣式與內嵌樣式(行內樣式比內嵌樣式權重高,所以行內樣式會覆蓋掉內嵌樣式)
- 行內樣式操作 element.style
- 浮動二維碼點擊叉號?隱藏案例 style.display
- 案例:通過操作位置屬性來實現循環精靈圖(在字符串中引用變量的操作方法:lis[i].style.backgroundPosition = '0 -' + index + 'px';)
- 案例:文本框得到光標和失去光標的不同顯示(onfocus、onblur)(input、value)
- 通過類名樣式批量修改樣式操作來簡化代碼 element.className
- 如果要增加或者刪除類,可以用 this.className += ' change';嗎?
- 案例:仿新浪注冊密碼輸入框(onfocus/onblur結合類名樣式判斷密碼是否合規)
- 操作元素總結
- 案例:頁面開關燈
- 案例:利用for循環實現多按鈕中點擊某個按鈕的變色(排他思想,先清除其他元素樣式,再設置自己的)
- 案例:實現頁面換膚(換背景)效果(利用循環注冊點擊事件)(querySelector鏈式獲取元素)
- 案例:新浪財經鼠標經過某行實現變色效果(表格隔行變色效果)(onmouseover、onmouseout)
- 復選框的全選按鈕和取消全選
- 獲取元素自有屬性和自定義屬性(getAttribute)
- 通用修改元素屬性值方式setAttribute(以后就用這個修改,主要用來設置自定義屬性,元素自帶屬性還是用老方法設置)移除屬性值removeAttribute
Web APIs
https://developer.mozilla.org/zh-CN/docs/Web/API
什么是DOM?
DOM樹
如何獲取網頁頁面元素?
根據id獲取元素 getElementById
<!DOCTYPE html> <html lang="en"><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> </head><body><div id="time">2019-9-9</div><script>// 1. 因為我們文檔頁面從上往下加載,所以先得有標簽 所以我們script寫到標簽的下面// 2. get 獲得 element 元素 by 通過 駝峰命名法 // 3. 參數 id是大小寫敏感的字符串// 4. 返回的是一個元素對象var timer = document.getElementById('time');console.log(timer);console.log(typeof timer);// 5. console.dir 打印我們返回的元素對象 更好的查看里面的屬性和方法console.dir(timer);</script> </body></html>根據標簽名獲取元素 getElementsByTagName
獲取父元素中的子元素,可以給父元素指定id,用getElementById獲取父元素,再用getElementsByTagName獲取父元素中的子元素
根據類名獲取某些元素集合 getElementsByClassName 通用選擇器querySelector querySelectorAll(既能選擇id,也能選擇類和通用標簽)(加#表示選擇id,加.表示選擇類)
<!DOCTYPE html> <html lang="en"><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> </head><body><div class="box">盒子1</div><div class="box">盒子2</div><div id="nav"><ul><li>首頁</li><li>產品</li></ul></div><script>// 1. getElementsByClassName 根據類名獲得某些元素集合var boxs = document.getElementsByClassName('box');console.log(boxs);// 2. querySelector 返回指定選擇器的第一個元素對象 切記 里面的選擇器需要加符號 .box #navvar firstBox = document.querySelector('.box');console.log(firstBox);var nav = document.querySelector('#nav');console.log(nav);var li = document.querySelector('li');console.log(li);// 3. querySelectorAll()返回指定選擇器的所有元素對象集合var allBox = document.querySelectorAll('.box');console.log(allBox);var lis = document.querySelectorAll('li');console.log(lis);</script> </body></html>獲取特殊元素body(document.body)html(document.documentElement)
事件概述(事件三要素:事件源 事件類型 事件處理程序)
<!DOCTYPE html> <html lang="en"><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> </head><body><button id="btn">唐伯虎</button><script>// 點擊一個按鈕,彈出對話框// 1. 事件是有三部分組成 事件源 事件類型 事件處理程序 我們也稱為事件三要素//(1) 事件源 事件被觸發的對象 誰 按鈕var btn = document.getElementById('btn');//(2) 事件類型 如何觸發 什么事件 比如鼠標點擊(onclick) 還是鼠標經過 還是鍵盤按下//(3) 事件處理程序 通過一個函數賦值的方式 完成btn.onclick = function() {alert('點秋香');}</script> </body></html>執行事件的步驟 常見鼠標事件
操作元素
改變元素內容 innerText和innerHtml
<!DOCTYPE html> <html lang="en"><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>顯示當前系統時間</button><div>某個時間</div><p>1123</p><script>// 當我們點擊了按鈕, div里面的文字會發生變化// 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></html>點擊按鈕顯示時間
innerText和innerHtml的區別(innerHtml顯示時支持html語法,讀取元素內容時能保留html代碼)(所以以后一般只用innerHtml就好了)
<!DOCTYPE html> <html lang="en"><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> </head><body><div></div><p>我是文字<span>123</span></p><script>// innerText 和 innerHTML的區別 // 1. innerText 不識別html標簽 非標準 去除空格和換行var div = document.querySelector('div');// div.innerText = '<strong>今天是:</strong> 2019';// 2. innerHTML 識別html標簽 W3C標準 保留空格和換行的div.innerHTML = '<strong>今天是:</strong> 2019';// 這兩個屬性是可讀寫的 可以獲取元素里面的內容var p = document.querySelector('p');console.log(p.innerText);console.log(p.innerHTML);</script> </body></html>通過注冊事件來改變元素屬性(劉德華與張學友圖片切換)
<!DOCTYPE html> <html lang="en"><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">張學友</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 = '張學友思密達';img.alt = '張學友因為太帥導致無法顯示'}ldh.onclick = function () {img.src = 'images/ldh.jpg';img.title = '劉德華';img.alt = '劉德華因為太帥導致無法顯示'}</script> </body></html>
案例:根據系統不同時間段顯示不同問候語和圖片
<!DOCTYPE html> <html lang="en"><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>// 根據系統不同時間來判斷,所以需要用到日期內置對象// 利用多分支語句來設置不同的圖片// 需要一個圖片,并且根據時間修改圖片,就需要用到操作元素src屬性// 需要一個div元素,顯示不同問候語,修改元素內容即可// 1.獲取元素var img = document.querySelector('img');var div = document.querySelector('div');// 2. 得到當前的小時數var date = new Date();var h = date.getHours();// 3. 判斷小時數改變圖片和文字信息if (h < 12) {img.src = 'images/s.gif';img.alt = '上午好圖片掛了!'div.innerHTML = '親,上午好,好好寫代碼';} else if (h < 18) {img.src = 'images/x.gif';img.alt = '下午好圖片掛了!'div.innerHTML = '親,下午好,好好寫代碼';} else {img.src = 'images/w.gif';img.alt = '晚上好圖片掛了!'div.innerHTML = '親,晚上好,好好寫代碼';}</script> </body></html>表單元素的屬性操作(表單操作比較特殊,跟普通元素不同)type value checked selected disabled(this)
<!DOCTYPE html> <html lang="en"><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> </head><body><button>按鈕</button><input type="text" value="輸入內容"><script>// 1. 獲取元素var btn = document.querySelector('button');var input = document.querySelector('input');// 2. 注冊事件 處理程序btn.onclick = function() {// input.innerHTML = '點擊了'; 這個是 普通盒子 比如 div 標簽里面的內容// 表單里面的值 文字內容是通過 value 來修改的input.value = '被點擊了';// 如果想要某個表單被禁用 不能再點擊 disabled 我們想要這個按鈕 button禁用// btn.disabled = true;this.disabled = true;// this 指向的是事件函數的調用者 btn}</script> </body></html>
案例:仿京東顯示密碼
修改元素樣式屬性
行內樣式與內嵌樣式(行內樣式比內嵌樣式權重高,所以行內樣式會覆蓋掉內嵌樣式)
行內樣式操作 element.style
<!DOCTYPE html> <html lang="en"><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: 200px;height: 200px;background-color: pink;}</style> </head><body><div></div><script>// 1. 獲取元素var div = document.querySelector('div');// 2. 注冊事件 處理程序div.onclick = function() {// div.style里面的屬性 采取駝峰命名法 this.style.backgroundColor = 'purple';this.style.width = '250px';}</script> </body></html>
浮動二維碼點擊叉號?隱藏案例 style.display
案例:通過操作位置屬性來實現循環精靈圖(在字符串中引用變量的操作方法:lis[i].style.backgroundPosition = ‘0 -’ + index + ‘px’;)
案例:文本框得到光標和失去光標的不同顯示(onfocus、onblur)(input、value)
通過類名樣式批量修改樣式操作來簡化代碼 element.className
<!DOCTYPE html> <html lang="en"><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: 100px;height: 100px;background-color: pink;}.change {background-color: purple;color: #fff;font-size: 25px;margin-top: 100px;}</style> </head><body><div class="first">文本</div><script>// 1. 使用 element.style 獲得修改元素樣式 如果樣式比較少 或者 功能簡單的情況下使用var test = document.querySelector('div');test.onclick = function() {// this.style.backgroundColor = 'purple';// this.style.color = '#fff';// this.style.fontSize = '25px';// this.style.marginTop = '100px';// 讓我們當前元素的類名改為了 change// 2. 我們可以通過 修改元素的className更改元素的樣式 適合于樣式較多或者功能復雜的情況// 3. 如果想要保留原先的類名,我們可以這么做 多類名選擇器// this.className = 'change';this.className = 'first change';}</script> </body></html>
如果要增加或者刪除類,可以用 this.className += ’ change’;嗎?
不行的,這樣會導致連續點擊后,change類越來越多
想刪掉類名,用 this.className -= ’ change’;也不行,因為字符串沒有-=這種語法
案例:仿新浪注冊密碼輸入框(onfocus/onblur結合類名樣式判斷密碼是否合規)
操作元素總結
案例:頁面開關燈
<!DOCTYPE html> <html lang="en"><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> </head><body><button id="btn">開關燈</button><script>var btn = document.getElementById('btn');var flag = 0;btn.onclick = function () {if (flag == 0) {document.body.style.backgroundColor = 'black';flag = 1;} else {document.body.style.backgroundColor = '#fff';flag = 0;}}</script> </body></html>
案例:利用for循環實現多按鈕中點擊某個按鈕的變色(排他思想,先清除其他元素樣式,再設置自己的)
<!DOCTYPE html> <html lang="en"><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> </head><body><button>按鈕1</button><button>按鈕2</button><button>按鈕3</button><button>按鈕4</button><button>按鈕5</button><script>// 1. 獲取所有按鈕元素var btns = document.getElementsByTagName('button');// btns得到的是偽數組 里面的每一個元素 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) 然后才讓當前的元素背景顏色為pink 留下我自己this.style.backgroundColor = 'pink';}}//2. 首先先排除其他人,然后才設置自己的樣式 這種排除其他人的思想我們成為排他思想</script> </body></html>案例:實現頁面換膚(換背景)效果(利用循環注冊點擊事件)(querySelector鏈式獲取元素)
<!DOCTYPE html> <html lang="en"><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" alt="第一張圖片"></li><li><img src="images/2.jpg" alt="第二張圖片"></li><li><img src="images/3.jpg" alt="第三張圖片"></li><li><img src="images/4.jpg" alt="第四張圖片"></li></ul><script>// 1. 獲取元素 var imgs = document.querySelector('.baidu').querySelectorAll('img');// console.log(imgs);// 2. 循環注冊事件 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></html>案例:新浪財經鼠標經過某行實現變色效果(表格隔行變色效果)(onmouseover、onmouseout)
復選框的全選按鈕和取消全選
獲取元素自有屬性和自定義屬性(getAttribute)
<!DOCTYPE html> <html lang="en"><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> </head><body><div id="demo" index="1" class="nav"></div><script>var div = document.querySelector('div');// 1. 獲取元素的屬性值// (1) element.屬性console.log(div.id);//(2) element.getAttribute('屬性') get得到獲取 attribute 屬性的意思 我們程序員自己添加的屬性我們稱為自定義屬性 indexconsole.log(div.getAttribute('id'));console.log(div.getAttribute('index'));// 2. 設置元素屬性值// (1) element.屬性= '值'div.id = 'test';div.className = 'navs';// (2) element.setAttribute('屬性', '值'); 主要針對于自定義屬性div.setAttribute('index', 2);div.setAttribute('class', 'footer'); // class 特殊 這里面寫的就是class 不是className// 3 移除屬性 removeAttribute(屬性) div.removeAttribute('index');</script> </body></html>通用修改元素屬性值方式setAttribute(以后就用這個修改,主要用來設置自定義屬性,元素自帶屬性還是用老方法設置)移除屬性值removeAttribute
代碼見上
總結
以上是生活随笔為你收集整理的JavaScript学习笔记(3)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JavaScript学习笔记(2)
- 下一篇: gradle idea java ssm