摘要:普通寫法轉(zhuǎn)換過程先變型盡量不要出現(xiàn)函數(shù)嵌套函數(shù)可以有全局變量把中不是賦值的語句放到多帶帶函數(shù)中改成面向?qū)ο笕肿兞烤褪菍傩院瘮?shù)就是方法中創(chuàng)建對象改指向事件或定時器問題現(xiàn)要求再創(chuàng)建一個選項卡,自動輪播,只需新增修改和新增一個方法
html:
111222333
css:
#div1 div{width: 200px; height: 200px;border:1px #000 solid; display: none;} .active{background:#f00;}
js:
// 普通寫法
window.onload = function () { var oParent = document.getElementById("div1"); var aInput = oParent.getElementsByTagName("input"); var aDiv = oParent.getElementsByTagName("div"); for (var i = 0; i < aInput.length; i++) { aInput[i].index = i; aInput[i].onclick = function () { for (var i = 0; i < aInput.length; i++) { aInput[i].className = ""; aDiv[i].style.display = "none" } this.className = "active"; aDiv[this.index].style.display = "block" } } }
轉(zhuǎn)換過程
-先變型 盡量不要出現(xiàn)函數(shù)嵌套函數(shù),可以有全局變量,把onload中不是賦值的語句放到多帶帶函數(shù)中
var oParent = null; var aInput = null; var aDiv = null; window.onload = function () { oParent = document.getElementById("div1"); aInput = oParent.getElementsByTagName("input"); aDiv = oParent.getElementsByTagName("div"); init(); } function init() { for (var i = 0; i < aInput.length; i++) { aInput[i].index = i; aInput[i].onclick = change; } } function change() { for (var i = 0; i < aInput.length; i++) { aInput[i].className = ""; aDiv[i].style.display = "none" } this.className = "active"; aDiv[this.index].style.display = "block" }
//改成面向?qū)ο?
全局變量就是屬性 函數(shù)就是方法 onload中創(chuàng)建對象 改this指向(事件或定時器問題)
window.onload = function () { var t1 = new Tab() t1.init(); } function Tab() { this.oParent = document.getElementById("div1"); this.aInput = this.oParent.getElementsByTagName("input"); this.aDiv = this.oParent.getElementsByTagName("div"); } Tab.prototype.init = function () { var This = this; for (var i = 0; i < this.aInput.length; i++) { this.aInput[i].index = i; this.aInput[i].onclick = function (){ This.change(this); } } } Tab.prototype.change = function (obj) { for (var i = 0; i < this.aInput.length; i++) { this.aInput[i].className = ""; this.aDiv[i].style.display = "none" } obj.className = "active"; this.aDiv[obj.index].style.display = "block" }
現(xiàn)要求再創(chuàng)建一個選項卡,自動輪播,只需新增div2 修改init和新增一個autoPlay方法
window.onload = function () { var t1 = new Tab("div1") t1.init(); var t2 = new Tab("div2") t2.init(); t2.autoPlay(); } function Tab(id) { this.oParent = document.getElementById(id); this.aInput = this.oParent.getElementsByTagName("input"); this.aDiv = this.oParent.getElementsByTagName("div"); this.iNow = 0; } Tab.prototype.autoPlay = function () { var This = this; setInterval(function () { if(This.iNow == This.aInput.length-1) { This.iNow = 0; }else { This.iNow++; } for (var i = 0; i < This.aInput.length; i++) { This.aInput[i].className = ""; This.aDiv[i].style.display = "none" } This.aInput[This.iNow].className = "active"; This.aDiv[This.iNow].style.display = "block" }, 2000) }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/52155.html
摘要:其實的面向?qū)ο蠛芏嘣砗蜋C制還是的,只不過把語法改成類似和老牌后端語言中的面向?qū)ο笳Z法一用封裝一個基本的類是不是很向和中的類其實本質(zhì)還是原型鏈,我們往下看就知道了首先說下語法規(guī)則中的就是類名,可以自定義就是構(gòu)造函數(shù),這個是關(guān)鍵字,當實例化對 其實es6的面向?qū)ο蠛芏嘣砗蜋C制還是ES5的,只不過把語法改成類似php和java老牌后端語言中的面向?qū)ο笳Z法. 一、用es6封裝一個基本的類 ...
插件顧名思義就是能在一個頁面多處使用, 各自按自己的參數(shù)配置運行, 并且相互不會沖突.會寫javascript插件是進階js高級的必經(jīng)之路, 也是自己所學知識的一個典型的綜合運用. 如果你還沒頭緒, 無從下手的話, 不用著急, 今天我們就一起來探討一下插件的一般寫法.所需技能: 1.面向?qū)ο笥梅?2.閉包的理解 3.變量作用域的理解 以一個tab選項卡的為例: 第一步: 我們需要寫html結(jié)...
閱讀 3735·2021-11-24 10:46
閱讀 1706·2021-11-15 11:38
閱讀 3761·2021-11-15 11:37
閱讀 3481·2021-10-27 14:19
閱讀 1939·2021-09-03 10:36
閱讀 1991·2021-08-16 11:02
閱讀 2998·2019-08-30 15:55
閱讀 2251·2019-08-30 15:44