久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

一周一話題之四(JavaScript,、Dom,、jQuery全面復(fù)習(xí)總結(jié)<Dom篇>)

 goldbomb 2014-02-18

一、 初探Dom

JavaScript—>Dom,C#—> .Net Framework,;JavaScript和C#都是一些基本語法,,沒有Dom和.Net類庫,JavaScript和C#也就發(fā)揮不出來它的威力來,。本文就帶你來回顧一下Dom操作,。

1. Dom介紹

Dom(文檔標(biāo)簽當(dāng)作對象來處理)

(1)DOM就是html頁面模型,將每個標(biāo)簽都作為一個對象,,javascript通過調(diào)用DOM中的屬性,、方法就可以對網(wǎng)頁中的文本框、層等元素進(jìn)行編程控制,。

(2)DOM就是一些讓JavaScript能操作Html頁面控件的類,、函數(shù)

(3)DHtml= CSS+JavaScript+Dom

動態(tài)設(shè)置事件

<script type="text/javascript">
        function F1() { alert('In F1'); }
   </script>
   <input type="button" value="關(guān)聯(lián)F1" onclick="document.onclick=F1;" />
<input type="button" value="關(guān)聯(lián)F1" onclick="F1()"

帶()表示調(diào)用函數(shù),直接寫函數(shù)名表示將其設(shè)置為事件的處理函數(shù),。

二,、 Dom基礎(chǔ)

1. window頂級對象

(1) window方法

①調(diào)用window的方法時,可以省略window

②方法

alert:彈出警告對話框

confirm:確定,、取消對話框

setInterval(code,delay):啟動計時器,每隔一段時間執(zhí)行指定的代碼

        code推薦使用匿名函數(shù)

clearInterval(intervalId):停止計時器

setTimeOut():定時執(zhí)行,,只執(zhí)行一次

clearTimeOut():清除定時

(2) window的屬性

① window.location

屬性:

location.protocol:該屬性保存了URL的協(xié)議部分。

location.hostname:該屬性保存了URL的主機(jī)名部分,。

location.port:該屬性保存了URL中的端口號部分,。

location.pathname:該屬性保存了URL中的文件名部分。

location.search:保存了URL的查詢部分(如果有的話),。

location.hash:保存了URL中的anchor名稱(如果有的話),。

方法:

window.location.href:獲取當(dāng)前地址

window.location.reload():刷新當(dāng)前頁

② window.event

     ->按下鍵,復(fù)合鍵

altKey、shiftKey,、ctrlKey

if (window.event.altKey) {
                alert("按下了Alt鍵");
   }


        具體按下的什么按鍵(與ASCII值不同)keyCode

     ->鼠標(biāo)坐標(biāo)

clientX,、clientY  獲取鼠標(biāo)坐標(biāo),相對于頁面來說的坐標(biāo)

offsetXoffsetY  相對于當(dāng)前元素自己左上角的偏移坐標(biāo)

screenX,、screenY  相對于整個屏幕的偏移坐標(biāo)

    ->停止事件繼續(xù)執(zhí)行

window.event.return = false;(標(biāo)準(zhǔn))不兼容火狐

也可以使用return false;來設(shè)置當(dāng)前事件處理程序返回值為false

③ window.screen

window.screen.width   獲取用戶屏幕分辨率寬

window.screen.height  獲取用戶屏幕分辨率高

clipboardData

setData()  設(shè)置剪切板的值

getData()  讀取粘貼板的值

clearData()  清空粘貼板的值

function Setclipboard() {
            window.clipboardData.setData('Text', window.clipboardData.getData('Text') + '霹靂烈火版權(quán)所有');
        }

history(操作歷史記錄)

    window.history.back() 后退

    window.history.go(-1) 后退

    window.history.forward() 前進(jìn)

    window.history.go(1)  前進(jìn)

document

-->write與writeln

    document.write就是動態(tài)創(chuàng)建內(nèi)容,、元素的

    document.writeln 也是動態(tài)創(chuàng)建內(nèi)容,源代碼中會換行

補(bǔ)充:以上兩個只有在與頁面加載的時候同時使用才會保證頁面上的內(nèi)容

應(yīng)用:廣告鏈接,,服務(wù)器端js代碼一改,,其它引用它的地方全改

-->獲得dom對象

getElementById() 根據(jù)元素Id獲得對象

getElementsByName() 根據(jù)元素name獲得對象

getElementsByTagName 根據(jù)指定標(biāo)簽獲得對象

復(fù)制代碼
function GetDomObject() {
            alert('getElementById:' + document.getElementById('txtElementById').value);
            var arrobjs = document.getElementsByName('abc');
            for (var i = 0; i < arrobjs.length; i++) {
                alert('getElementsByName元素值:' + arrobjs[i].value);
            }
            var tagNameObjs = document.getElementsByTagName('p');
            for (var j = 0; j < tagNameObjs.length; j++) {
                alert('getElementsByTagName元素值:' + tagNameObjs[j].innerHTML);
            }
        }
復(fù)制代碼

注: 不能用for in(鍵值對)循環(huán)

⑦ 其它屬性

close  返回true或者false,表示window對象對對應(yīng)的窗口是否關(guān)閉,。

opener  表示打開當(dāng)前窗口的那個window對象,。

Defaultstatus  設(shè)置和返回窗口狀態(tài)欄中默認(rèn)顯示的文本內(nèi)容。

Status  設(shè)置和返回窗口狀態(tài)欄中當(dāng)前正顯示的內(nèi)容,。

screenTop  返回窗口左上角頂點在屏幕上的垂直距離,。

srceenLeft  返回窗口左上角頂點在屏幕上的水平距離。

回到導(dǎo)航

2. body,、document對象事件

onload 頁面加載后觸發(fā):頁面加載后就可以document.getElementById(“控件Id”)來獲取dom元素ID了

onunload 頁面卸載后觸發(fā)

onbeforeunload 頁面卸載前觸發(fā)

注:要為整個頁面注冊事件就用document,不要用body

回到導(dǎo)航

3. 通用的HTML元素的事件

onclick(單擊),、ondblclick(雙擊)、onkeydown(按鍵按下),、onkeypress(點擊按鍵),、onkeyup(按鍵釋放)、onmousedown(鼠標(biāo)按下),、onmousemove(鼠標(biāo)移動),、onmouseout(鼠標(biāo)離開元素范圍)、onmouseover(鼠標(biāo)移動到元素范圍),、onmouseup(鼠標(biāo)按鍵釋放),、oncontextmenu(在瀏覽器中單擊鼠標(biāo)右鍵顯示”右鍵菜單”時觸發(fā))

回到導(dǎo)航

4. 冒泡事件

事件冒泡:如果元素A嵌套在元素B中,那么A被點擊不僅A的onclick事件會被觸發(fā),,B的onclick也會被觸發(fā),。觸發(fā)的順序是“由內(nèi)而外” 。

<table onclick="alert('table onclick');">
        <tr onclick="alert('tr onclick');">
            <td onclick="alert('td onclick');"><p onclick="alert('p onclick');">aaaa</p></td>
            <td>bbb</td>
        </tr>
   </table>

取消事件冒泡: window.event.cancelBubble = true; //IE下

回到導(dǎo)航

5. this與event.srcElement

this:表示發(fā)生事件的控件,。只有在事件響應(yīng)函數(shù)才能使用this獲得發(fā)生事件的控件,,在事件響應(yīng)函數(shù)調(diào)用的函數(shù)中不能使用

window.event.srcElement:指最初引發(fā)事件的事件源對象 

fuction method(){
      alert(this.value);
   }
   <input type="text" onblur="method()"/>

這樣是不正確的,可以采用

fuction method(btn){
      alert(btn.value);
   }
   <input type="text" onblur="method(this)"/>

補(bǔ)充:this表示當(dāng)前觸發(fā)事件的對象,,表示當(dāng)前誰在執(zhí)行事件,,發(fā)生事件的控件;

event.srcElement是引發(fā)事件的對象:事件冒泡,。

如果要直接使用this.屬性,,此時的函數(shù)不能是被調(diào)用的而必須是響應(yīng)函數(shù),而window.event.srcElement則無此限制,。

三,、 Dom操作

1. 動態(tài)創(chuàng)建Dom

createElement(‘element’)  創(chuàng)建指定標(biāo)簽dom對象

appendChild(node)  將創(chuàng)建元素添加到相應(yīng)的元素下

removeChild(node)  刪除元素

replaceChild(new,old)  替換元素

insertBefore(new,參照)  插入元素

回到導(dǎo)航

2. innerText、innerHTML

(1) 幾乎所有DOM元素都有innerText、innerHTML屬性(注意大小寫),,分別是元素標(biāo)簽內(nèi)內(nèi)容的文本表示形式和HTML源代碼,,這兩個屬性是可讀可寫的。

(2) FF不支持innerText,,使用textContent

(3) innerHTML可以代替createElement,,屬于簡單、粗放型,、后果自負(fù)的創(chuàng)建

① 大量進(jìn)行節(jié)點操作時,使用innerHTML的性能要好于頻繁的Dom操作

② 使用innerTHML=‘’來刪除節(jié)點可能會造成內(nèi)存問題

innerText  :只能設(shè)置純文本,,即便寫了html代碼,,也會對html代碼進(jìn)行編碼,

innerHTML:可以設(shè)置html代碼和純文本,。

3.  操作樣式

(1)通過操作style屬性來修改元素的樣式

css中屬性名在JavaScript中操作的時候?qū)傩悦赡懿灰粯?,比如:font-size→style.fontSize;margin-top→style.marginTop //駝峰命名法

改邊框:dvoObj.style.width

改背景:dvoObj.style.backgroundColor

改寬高:dvoObj.style.width|height--需要加px

注:不要寫成div1.style.width=80px,,而是div1.style.width=‘80px’

(2)設(shè)置元素樣式

修改元素的樣式不是設(shè)置class屬性,,而是className屬性

復(fù)制代碼
<style type="text/css">
        .emptyfield
        {
            background-color:Red;
        }
        .normal
        {
            background-color:inherit;
        }
    </style>
    <script type="text/javascript">
        function check(txt) {
            var s = txt.value;
            if (s.length <= 0) {
                txt.className = "emptyfield";
                alert('這個字段必填!');                
            }
            else {
                txt.className = "normal";
            }
        }
    </script>
<input type="text" onblur="check(this)" />
<input type="text" onblur="check(this)" />
<input type="text" onblur="check(this)" />
復(fù)制代碼

visibility設(shè)置隱藏后,,隱藏部分仍然占位

回到導(dǎo)航

4. Form對象

click(),focus(),blur();//相當(dāng)于通過程序來觸發(fā)元素的單擊,、獲得焦點以及失去焦點的事件。

回到導(dǎo)航

5. JS中的正則表達(dá)式

(1) 創(chuàng)建正則表達(dá)式類的方法

var regex = new RegExp(“\\d{5}”);

var regex = /\d{5}/; -->推薦寫法

/表達(dá)式/是JavaScript中專門為簡化正則表達(dá)式編寫而提供的語法,,寫在//中的正則表達(dá)式就不用管轉(zhuǎn)義符了,。

(2) RegExp對象的方法

① 匹配

test(str)判斷字符串str是否匹配正則表達(dá)式,相當(dāng)于C#中的IsMatch

② 提取

exec(str)進(jìn)行搜索匹配,,返回值為匹配結(jié)果(*),,是一個對象,該對象包含所提取到的第一個字符串的“完成匹配結(jié)果”,,以及所有的“提取組”;相當(dāng)于c#中match()和matches()

③ 替換

replace()

回到導(dǎo)航

6. 火狐瀏覽器(FF)不兼容性:

能力檢測:

if (typeof td1.innerText == 'string') {
     td1.innerText = txt;
   }
   else {
     td1.textContent = txt;
   }

(1)取消事件:window.event.returnValue不兼容FF

解決:用火狐特有 e. preventDefault()或者return false

(2)window.event.altKey:if(event.altKey)不兼容FF

解決:

復(fù)制代碼
function BodyClickHandlerOnFF(e) {
            if (e.altKey) {
                alert('按下alt鍵');
            } else {
                alert('普通點擊,!');
            }
        }
<body onclick="BodyClickHandlerOnFF(event);">
復(fù)制代碼

(3) 獲取位置:window.event.ClientX、ScreenX,、OffsetX不兼容FF

解決:arguments[0].clientX…

(4) 獲得事件源對象:window.event.srcElement 不兼容FF

function MyClickHandlerOnFF(e) {
            var obj = e.target;
            alert(obj.value);
        }
    <input type="button" value="FF下事件源對象" onclick="MyClickHandlerOnFF(event);"/>

(5) innerText:不兼容FF

解決:textContent

(6) 擴(kuò)展《FF與IE對JavaScript和CSS的區(qū)別》

回到導(dǎo)航

7. 性能優(yōu)化

(1) 聲明變量賦初值

(2) 盡量避免直接聲明全局變量,,比如要聲明全局變量name,但是它有可能與window.name沖突,所以全局變量一般都會聲明在一個全局對象中:var itcast={name:’zxh’,num:10};使用這些全局變量的時候通過itcast.name或者itcast.num,,就可以減少與系統(tǒng)的重名了,。

(3) 當(dāng)編寫大量Js代碼的時候難免會遇到命名沖突的問題,這時可以通過模擬命名空間的方式來避免命名沖突,。例如:

var itcast={};
   var itcast.net={};
   var itcast.net.net0405={name:’zxh’,sayHi=function(){}};

(4) 盡量避免使用全局變量,。(搜索全局變量時,會一層一層的搜索每個作用域范圍,耗時,,低效,,命名沖突)

(5) 使用減值循環(huán)或者優(yōu)化循環(huán)條件,不要在循環(huán)條件中寫i<xxx.length而要用一個變量來代替,,i<len,。因為循環(huán)條件每次都會執(zhí)行,這樣的話每次都會計算xxx.length,。

(6) 避免使用eval(“alert(10);”);或setInterval(“myFunc();”,1000);這種雙重解析的代碼,。低效!

(7) 使用原生的方法,,比如內(nèi)置的join(),、reverse(),使用這些本來瀏覽器就有的方法不要自己寫myJoin()之類的,,性能低,。原生方法都是用c或者c++寫的,性能高,。

(8) 盡可能使用switch來代替多個if-else

(9) 盡量減少語句數(shù)量

var arr=[1,2,’a’,true];
   var p1={name:’zxh’,age:18};//創(chuàng)建對象

(10) 當(dāng)大量操作dom元素時使用文檔碎片,,避免多次更新頁面。

var fragment=document.createDocumentFragment();

四,、 實力檢測

以下是一些練習(xí)題(試題來源--傳智播客),,看你能做出來幾個呢

(1) 標(biāo)題欄走馬燈效果-->瀏覽器標(biāo)題文字向左右滾動

(2) 點擊一個按鈕,被點擊的按鈕顯示“嗚嗚”,,其他按鈕顯示“哈哈”

(3) 十秒鐘后協(xié)議文本框下的注冊按鈕才能點擊,,時鐘倒數(shù)。

(4) 加法計算器,。兩個文本框中輸入數(shù)字,,點擊【=】按鈕將相加的結(jié)果放到第三個文本框中

(5) 點擊按鈕動態(tài)增加網(wǎng)站列表,分兩列,,第一列為網(wǎng)站的名字,,第二列為帶網(wǎng)站超鏈接的網(wǎng)站名。增加三行常見網(wǎng)站,。

(6) 實現(xiàn)無刷新評論

(7) 創(chuàng)建三個輸入文本框,,當(dāng)光標(biāo)離開文本框的時候如果文本框為空,則將文本框背景色設(shè)置為紅色,,如果不為空則為白色

(8) 評分控件V1,,用一個單行5列的Table做評分控件,監(jiān)聽td的click事件,,點擊一個td的時候,,將這個td及之前的td背景變?yōu)榧t色,,之后的td背景變?yōu)榘咨?/p>

(9) 超鏈接的單選效果-->頁面上若干個超鏈接,點擊一個超鏈接s的時候被點擊的超鏈接變?yōu)榧t色背景,,其他超鏈接背景沒有變

(10) 點擊按鈕,,表格隔行變色:偶數(shù)行為黃色背景,奇數(shù)行為默認(rèn)顏色

(11) 放若干文本框,,獲得焦點的文本框黃色背景,,其他控件背景顏色是白色

(12) 點擊表格行,被點擊的行高亮顯示(背景是黃色),,其他行白色背景

(13) 跟著鼠標(biāo)飛的圖片效果

(14) 點擊【登錄】按鈕,,彈出一個顯示用戶名、密碼等的層

(15) 一幅圖片,。點擊小圖,,彈出一個層在點擊的位置顯示小圖對應(yīng)的大圖,并且顯示姓名,、身高等信息,點擊層中的關(guān)閉按鈕關(guān)閉層

(16) 界面上有幾個球隊名字的列表,,將鼠標(biāo)放到球隊名字上就變?yōu)榧t色背景,,其他球隊背景顏色為白色,點擊一個球隊的時候就將點擊的球隊變?yōu)閒ontSize=30字體

(17) 顯示數(shù)字時鐘,,時間顯示到一個div

(18) 有一個搜索文本框,,焦點不在文本框中的時候,如果文本框沒有值,,則文本框中顯示灰色文本(Gray)的“輸入搜索關(guān)鍵詞”,,否則顯示用戶輸入的值;焦點在文本框中時如果之前顯示“輸入搜索關(guān)鍵詞”則清空文本框的值,,并且將文本修改為黑色

(19) 密碼的安全級別,密碼強(qiáng)度顯示

(20) 歌曲列表 (CheckBox+Label)全選,、全不選、反選

(21) 實現(xiàn)省市選擇界面,。請選擇省的處理,,從后向前刪

(22) 權(quán)限選擇頁面,選擇,、撤回,、全部選擇、全部撤回

(23) 百度搜索時的自動完成功能

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多