今天週五,很閒,坐在電腦前沒事可做,產品線的人也沒提什麼新的需求,可能下週會有新的需求和工作安排,但那是下週的事了。今天就想寫點技術的東西,也就當作是記記筆記,本人水平有限,希望大家多多指教,嘴下留情,哈哈。
有時候我們會想擴展DOM元素的功能,可以添加一些自訂的方法,以讓它用起來更加靈活、方便;先來舉個例子:
複製程式碼 程式碼如下:以上這段程式碼就是功能擴充後的最終效果,它與上一段程式碼實現的功能是一樣的,但現在它還不能執行,要進行擴充後才可以,在此之前先來看一些基礎知識,這很重要,因為等下會用到:
1、HTMLElement,在DOM標準中,每個元素都繼承自HTMLElement,而HTMLElement又繼承自Element,Element又繼承自Node;於是我們可以使用HTMLElement的Prototype來擴充HTML元素的方法與屬性,如何實作?我們來看一段程式碼:
你好
以上程式碼在頁面載入的時候就彈出“這是一個擴充方法”,不過相信你已經注意到了,在IE6,7,8裡面會出錯,但在IE9以上或Chrome,Firefox,Opera這些瀏覽器裡面都能正常運作,這是相容性問題,別擔心,後面會解決。
以上的程式碼彈性不夠好,我們優化一下,讓它更有彈性:
你好
從上述程式碼可以看出,有了DOMExtend這個方法以後,我們就可以透過傳入不用的name 和fn 來實現不同的擴充。
2、以上講完了HTMLElement,接下來講講事件的綁定,很多人都知道,IE和其他瀏覽器的事件綁定方式不一樣,實現兼容所有瀏覽器的事件綁定的代碼如下:
}
}
以下是事件綁定的使用例子:
>
複製代碼
代碼如下:
你好
name, fn){
if(typeof(HTMLElement)!="undefined"){
}
else{
var _getElementById=document.getElementById;
var _elem=_getElementById(id);
return _elem;
}
document.getElementsByTagName=function(tag){
var len=_elem.length;
,(var i=0;i
}
}
var var _createElement=document.createElement;
document.createElement=function(tag){
var _elem=_create元素(標籤);
eval("_elem." name " =" fn);
return _elem;
var _documentElement=document.documentElement;
eval("_documentElement." name "=" fn);
var _documentBody=document.body;
}
}
function BindEvent(活動,有趣){ this.addEventListener(event,fun,false);
else{
, }
DOMExtend("bind",BindEvent);var wrap=document.getElementById("tagA" );
wrap.bind("click",function(){
alert(this. nerHTML);
OK,目前為止已經解決了相容性問題,這是所有瀏覽器都能順利通過的DOM元素擴展的代碼,但是這樣還有一個小問題,細心的人會發現在IE瀏覽器裡面彈出的結果是"undefined",而不是"你好";問題的原因在於IE的事件綁定上,看以上代碼,當調用alert(this.innerHTML)的時候,由於IE綁定事件用的是attachEvent,這時候this指向的是windows,於是現在的目標的要改變this指向的對象,將this指向tagA。於是經過修改,完整程式碼如下:
複製程式碼
你好
name, fn){
if(typeof(HTMLElement)!="undefined"){
}
else{
var _getElementById=document.getElementById;
var _elem=_getElementById(id);
return _elem;
}
document.getElementsByTagName=function(tag){
var len=_elem.length;
,(var i=0;i
}
}
var var _createElement=document.createElement;
document.createElement=function(tag){
var _elem=_create元素(標籤);
eval("_elem." name " =" fn);
return _elem;
var _documentElement=document.documentElement;
eval("_documentElement." name "=" fn);
var _documentBody=document.body;
}
}
function BindEvent(活動,有趣){ this.addEventListener(event,fun,false);
else{
var tag unction(){
fun.apply(tag,arguments);//這裡是關鍵 }
}
wrap.bind("click",function(){
警報(this.innerHTML);
})
})

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。

JavaScript是現代Web開發的基石,它的主要功能包括事件驅動編程、動態內容生成和異步編程。 1)事件驅動編程允許網頁根據用戶操作動態變化。 2)動態內容生成使得頁面內容可以根據條件調整。 3)異步編程確保用戶界面不被阻塞。 JavaScript廣泛應用於網頁交互、單頁面應用和服務器端開發,極大地提升了用戶體驗和跨平台開發的靈活性。

Python更适合数据科学和机器学习,JavaScript更适合前端和全栈开发。1.Python以简洁语法和丰富库生态著称,适用于数据分析和Web开发。2.JavaScript是前端开发核心,Node.js支持服务器端编程,适用于全栈开发。

JavaScript不需要安裝,因為它已內置於現代瀏覽器中。你只需文本編輯器和瀏覽器即可開始使用。 1)在瀏覽器環境中,通過標籤嵌入HTML文件中運行。 2)在Node.js環境中,下載並安裝Node.js後,通過命令行運行JavaScript文件。

如何在Quartz中提前發送任務通知在使用Quartz定時器進行任務調度時,任務的執行時間是由cron表達式設定的。現�...

在JavaScript中如何獲取原型鏈上函數的參數在JavaScript編程中,理解和操作原型鏈上的函數參數是常見且重要的任�...

在微信小程序web-view中使用Vue.js動態style位移失效的原因分析在使用Vue.js...

在Tampermonkey中如何對多個鏈接進行並發GET請求並依次判斷返回結果?在Tampermonkey腳本中,我們經常需要對多個鏈...


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

禪工作室 13.0.1
強大的PHP整合開發環境

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SublimeText3漢化版
中文版,非常好用