Python学习 Day 046 - DOM 操作 二
生活随笔
收集整理的這篇文章主要介紹了
Python学习 Day 046 - DOM 操作 二
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
主要內(nèi)容:
- 1.DOM的操作(創(chuàng)建,追加,刪除)
- 2.js中的面向?qū)ο?/strong>
- 3.定時器
1. DOM的操作(創(chuàng)建,追加,刪除)
(1)DOM節(jié)點的獲取
-
-
nextElementSibling 獲取下一個兄弟節(jié)點
-
children 獲取所有的子標(biāo)簽
(2) DOM的增刪操作
創(chuàng)建 createElement()
追加 appendChild() 父子標(biāo)簽操作
父.appendChild(oDiv);刪除 removeChild()
父.removeChild(子節(jié)點); 自己.parentNode.removeChild(自己)插入insertBefore()
父.insertBefore(新的子節(jié)點,要參考的節(jié)點)利用創(chuàng)建刪除實現(xiàn)隱藏代碼示例
<script>var oBtn = document.querySelector("#btn");var oDel = document.querySelector("#del");var oFather = document.querySelector(".father");var oP = null;var oA = null;oBtn.onclick = function(){//創(chuàng)建 dom p標(biāo)簽oP = document.createElement("p");oA = document.createElement("a");//追加到父級標(biāo)簽中 oFather.appendChild(oP);oFather.insertBefore(oA,oP);//設(shè)置對象屬性值oA.href = 'http://www.baidu.com';//設(shè)置值oA.innerText="百度";oP.innerHTML = "alex";oP.setAttribute("class","active")};oDel.onclick = function(){//如果oP對象存在就結(jié)束程序if (!oP){return;// }else{console.log(oFather);//將增加的p標(biāo)簽移出 oFather.removeChild(oP)}}</script>(3)?網(wǎng)頁中顯示隱藏性能消耗問題
1.可以通過控制元素的類名或者是style屬性,對元素進行顯示隱藏好處: 可以在網(wǎng)頁中頻繁性的切換,主要控制的是display:none|block;壞處: 文檔初始化會有渲染開銷,但是這點開銷不算什么. 2.通過DOM操作 appendChild和removeChild 對元素顯示隱藏好處:文檔初始化的時候不會產(chǎn)生渲染開銷壞處: 不要在網(wǎng)頁中做頻繁性的切換,會產(chǎn)生性能消耗(4)使用js模擬hover選擇器
<title>Title</title><style>*{padding: 0;margin: 0;}ul{list-style: none;}ul{width: 600px;height: 80px;line-height: 80px;text-align:center;overflow:hidden;}ul li{float:left;margin: 0 10px;width: 80px;height: 80px;background: darkturquoise;color: #fff;}ul li.active{background: red;}</style> </head> <body> <ul><li>舉</li><li>頭</li><li>望</li><li>明</li><li>月</li> </ul> <script>var lists = document.getElementsByTagName("li");for(var i =0;i<lists.length;i++){lists[i].onclick = function(){//在修改當(dāng)前盒子樣式之前,現(xiàn)將所有盒子的類名置空for(var j=0; j<lists.length;j++){lists[j].className ="";}this.className = "active"; //修改當(dāng)前 鼠標(biāo)進入盒子的樣式 }} </script>(5)選項卡
<title>Title</title><style>*{padding: 0;margin: 0;}ul{list-style: none;}#tab{width: 480px;margin: 20px auto;border: 1px solid red;}ul{width: 100%;overflow: hidden;}ul li{float: left;width: 160px;height: 60px;line-height: 60px;text-align: center;background-color: #cccccc;}ul li a{text-decoration: none;color:black;}li.active {background-color: darkcyan;}p{display: none;height: 200px;text-align: center;line-height: 200px;background-color: darkgrey;}p.active{display: block;}</style> </head> <body> <div><div id="tab"><ul><li class = "active"><a href="javascript:void(0);">首頁</a></li><li class = "active"><a href="javascript:void(0);">新聞</a></li><li class = "active"><a href="javascript:void(0);">圖片</a></li></ul><p class="active">首頁內(nèi)容</p><p>新聞內(nèi)容</p><p>圖片內(nèi)容</p></div> </div><script>var lists = document.getElementsByTagName("li");var oPs = document.getElementsByTagName("P");// var i;//i=3 變量提升 會導(dǎo)致 變量 是一個全局作用域//var 聲明變量 全局作用域,存在變量提升for(var i= 0; i<lists.length;i++){ //為了給每個dom添加事件lists[i].currentIndex = i;console.dir(lists[i]);lists[i].onclick = function(){for(var j = 0; j<lists.length;j++){lists[j].className = "";oPs[j].className = '';}this.className = "active";oPs[this.currentIndex].className = 'active'}} </script>注意;變量提升問題
<script>// var a;// //變量提升// console.log(a);//undefined// a = 1;// console.log(a); console.log(a);{var a = 2;}console.log(a);// let聲明的變量 1 塊級作用域 2.不存在變量提升console.log(b); //找不到,不存在 {let b= 3;}console.log(b) </script> 變量提升通過es6中的let來解決變量提升
<script>var lists = document.getElementsByTagName("li");var oPs = document.getElementsByTagName("P");// var i;//i=3 變量提升 會導(dǎo)致 變量 是一個全局作用域//var 聲明變量 全局作用域,存在變量提升for(let i= 0; i<lists.length;i++){ //為了給每個dom添加事件 console.dir(lists[i]);lists[i].onclick = function(){for(var j = 0; j<lists.length;j++){lists[j].className = "";oPs[j].className = '';}this.className = "active";oPs[i].className = 'active'}} </script>2.js中的面向?qū)ο?/strong>
(1)使用Object或?qū)ο笞置媪縿?chuàng)建對象
(2)工廠模式創(chuàng)建對象
function createPerson(name, age) {let person = new Object();person.name = name;person.age = age;person.fav = function () {console.log(this);}return person;}function createFruit(name, age) {let fruit = new Object();fruit.name = name;fruit.age = age;fruit.fav = function () {console.log(this);}return fruit;}var p1 = createPerson('alex',17);var f1 = createFruit('桃子',1);console.log(p1 instanceof Object);console.log(f1 instanceof Object);(3)構(gòu)造函數(shù)模式創(chuàng)建對象
function Person(name,age){this.name = name;this.age = age;this.fav = function () {alert(this.name)}}function Fruit(name,age){this.name = name;this.age = age;this.fav = function () {alert(this.name)}} // 創(chuàng)建對象 使用new關(guān)鍵字var p1 = new Person('alex',17);var f1 = new Fruit('桃子',17);console.log(p1 instanceof Object);console.log(f1 instanceof Object);console.log(p1 instanceof Person);console.log(f1 instanceof Fruit);(4)原型模式創(chuàng)建對象
function Person(name,age){this.name = name;this.age = age; } Person.prototype.fav = function () {console.log(this.name); } let p1 = new Person('alex',16); let p2 = new Person('alex',16);p1.fav();//es6 使用class關(guān)鍵字來創(chuàng)建對象 class Furit{//初始化的構(gòu)造器方法constructor(name='alex',age=16){this.name = name;this.age = age}//對象的單體模式 等價于fav:function(){} fav(){console.log(this.age);} }var f1 = new Furit(); f1.fav(); es6的用法: 1.模板字符串 `` 變量名使用${} 2.class 類的概念 3.箭頭函數(shù) ()=>3 等價于 function(){ return 3}3.定時器
?
轉(zhuǎn)載于:https://www.cnblogs.com/wcx666/p/9936471.html
總結(jié)
以上是生活随笔為你收集整理的Python学习 Day 046 - DOM 操作 二的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 斜率优化
- 下一篇: 2018.11.09 codeforce