javascript tabIndex屬性
下面的例子,為了突現(xiàn)tabIndex控制焦點(diǎn)跳轉(zhuǎn)的能力,特意把順序打亂了。請(qǐng)先選中第一個(gè)文本域,然后按tab鍵觀察。
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁(yè)面才能執(zhí)行]
根據(jù)這篇文章的介紹,W3C DOM與Netscape僅是把tabIndex添加到有限的幾個(gè)元素上:a, area, button, input, object, select, textarea,也就是所謂的表單元素與鏈接。IE4則比它多以下元素: applet, body, div, embed, isindex, marquee, span, table, 與td,到了IE5,幾乎所有能渲染的元素都擁有這屬性(像br元素就是不能渲染的)。tabIndex的值,根據(jù)W3C的規(guī)定,范圍在0到 32767。
在jQuery的源碼中,講到attr部分提供了一條鏈接,是專門(mén)說(shuō)明如何用javascript設(shè)置獲取與移除tabIndex屬性,不過(guò)已有些日子了,許多主流瀏覽器都更新了版本。因此我再測(cè)試了一次。測(cè)試程序見(jiàn)下面的運(yùn)行框:
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁(yè)面才能執(zhí)行]
tabindex為1的input元素 | IE6 | IE7 | IE8 | FF3.55 | opeta10.10 | Safari4.0 | chrome4.02 |
---|---|---|---|---|---|---|---|
el.tabIndex | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
el.getAttribute("tabindex") | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
el.getAttribute("tabIndex") | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
此表格與《Getting, setting, and removing tabindex values with JavaScript》一文中對(duì)應(yīng)的表格相比,全部為1。
我們?cè)賮?lái)看當(dāng)表單元素沒(méi)有顯示地設(shè)置tabIndex屬性時(shí),tabIndex是否存在,存在的話其默認(rèn)值是多少。
沒(méi)有tabIndex的input元素 | IE6 | IE7 | IE8 | FF3.55 | opeta10.10 | Safari4.0 | chrome4.02 |
---|---|---|---|---|---|---|---|
el.tabIndex | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
el.getAttribute("tabindex") | 0 | 0 | 0 | null | null | null | null |
el.getAttribute("tabIndex") | 0 | 0 | 0 | null | null | null | null |
如果測(cè)試對(duì)象為一個(gè)沒(méi)有顯式設(shè)置tabIndex屬性的div元素呢?在W3C標(biāo)準(zhǔn)中,只有表單元素與鏈接才能tabIndex屬性。
沒(méi)有tabIndex的div元素 | IE6 | IE7 | IE8 | FF3.55 | opeta10.10 | Safari4.0 | chrome4.02 |
---|---|---|---|---|---|---|---|
el.tabIndex | 0 | 0 | 0 | -1 | -1 | -1 | -1 |
el.getAttribute("tabindex") | 0 | 0 | 0 | null | null | null | null |
el.getAttribute("tabIndex") | 0 | 0 | 0 | null | null | null | null |
我們看這篇文章,標(biāo)準(zhǔn)瀏覽器的設(shè)定其涇渭分明,-1給那些不該擁有它的元素,0是默認(rèn)分配給那些表單元素與鏈接,如果用戶定義了就返回用戶的認(rèn)定值,即便它是div。
不過(guò)在IE中,非表單元素與鏈接無(wú)論tabIndex是否定義都返回0,那么我們?cè)趺粗涝厥欠褚讯x過(guò)呢?《Getting, setting,……》給出一個(gè)非常好的辦法。利用getAttributeNode 獲取對(duì)應(yīng)的屬性節(jié)點(diǎn)。在IE中,如果是默認(rèn)屬性或已定義屬性,將會(huì)返回一個(gè)對(duì)象,標(biāo)準(zhǔn)瀏覽器則只有當(dāng)我們顯示地設(shè)置這屬性時(shí)才返回對(duì)象,其他一律為null。在IE中,如果是默認(rèn)屬性,沒(méi)有為其賦值,它有一個(gè)特殊的specified ,顯示為false,如果賦值了,則為true。標(biāo)準(zhǔn)瀏覽器沒(méi)有這東西,也不需要此東西。
再看為沒(méi)有tabIndex屬性元素賦值的情況el.tabIndex=value就不用說(shuō)了,肯定行得通,dom 0年代的實(shí)現(xiàn)。如果一個(gè)元素用setAttribute("tabIndex",3)賦值,注意是大寫(xiě),那么無(wú)論是el.tabIndex還是el.getAttribute("tabIndex")還是el.getAttribute("tabindex")都能得到3。如果是setAttribute("tabindex",3)賦值,IE則全為0,標(biāo)準(zhǔn)瀏覽器則全為3,因此還是用前者吧。
沒(méi)有tabIndex的input元素 | IE6 | IE7 | IE8 | FF3.55 | opeta10.10 | Safari4.0 | chrome4.02 |
---|---|---|---|---|---|---|---|
el.tabIndex=3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 |
el.setAttribute("tabIndex",3) | 3 | 3 | 3 | 3 | 3 | 3 | 3 |
el.setAttribute("tabindex",3) | 0 | 0 | 0 | 3 | 3 | 3 | 3 |
最后移除屬性的情況,移除結(jié)果后分別用el.tabIndex,el.getAttribute("tabIndex"),el.getAttribute("tabindex")測(cè)試。誰(shuí)都沒(méi)有把握移除干凈,從目前的情況來(lái)看,只有選擇el.removeAttribute
tabIndex為3的input元素 | IE6 | IE7 | IE8 | FF3.55 | opeta10.10 | Safari4.0 | chrome4.02 |
---|---|---|---|---|---|---|---|
el.removeAttribute |
0,0,0 | 0,0,0 | 0,0,0 | 0,null,null | 0,null,null | 3,null,null | 3,null,null |
el.removeAttribute |
3,3,3 | 3,3,3 | 3,3,3 | 0,null,null | 0,null,null | 3,null,null | 3,null,null |
delete el.tabIndex | errer | errer | errer | 3,3,3 | 0,null,null | 3,3,3 | undefined,null,null |
- 一實(shí)用的實(shí)現(xiàn)table排序的Javascript類庫(kù)
- 麥雞的TAB切換功能結(jié)合了javascript和css
- javascript 通用滑動(dòng)門(mén)tab類
- javascript刪除Table中的一行的腳本代碼
- javascript 回車替換成TAB的腳本
- javascript 表格排序和表頭浮動(dòng)效果(擴(kuò)展SortTable)
- JavaScript Table行定位效果
- javascript 動(dòng)態(tài)table添加colspan\rowspan 參數(shù)的方法
- javascript hashtable實(shí)現(xiàn)代碼
- javascript 定時(shí)自動(dòng)切換的選項(xiàng)卡Tab
- javascript 移動(dòng)鼠標(biāo)得到單元格所在table表中的rowIndex位置[兼容ie,firefox]
- javascript 哈希表(hashtable)的簡(jiǎn)單實(shí)現(xiàn)
- javascript實(shí)現(xiàn)tabs選項(xiàng)卡切換效果(自寫(xiě)原生js)
- javascript操作table(insertRow,deleteRow,insertCell,deleteCell方法詳解)
- js(JavaScript)實(shí)現(xiàn)TAB標(biāo)簽切換效果的簡(jiǎn)單實(shí)例
- JavaScript獲取table中某一列的值的方法
- 基于JavaScript實(shí)現(xiàn)移動(dòng)端TAB觸屏切換效果
- javascript實(shí)現(xiàn)tab切換的四種方法
- javascript實(shí)現(xiàn)tab切換的兩個(gè)實(shí)例
相關(guān)文章
js實(shí)現(xiàn)背景圖片感應(yīng)鼠標(biāo)變化的方法
這篇文章主要介紹了js實(shí)現(xiàn)背景圖片感應(yīng)鼠標(biāo)變化的方法,實(shí)例分析了javascript針對(duì)鼠標(biāo)事件與css樣式圖片的操作技巧,需要的朋友可以參考下2015-02-02JavaScript高級(jí)程序設(shè)計(jì) 閱讀筆記(四) ECMAScript中的類型轉(zhuǎn)換
ECMAScript中的類型轉(zhuǎn)換,學(xué)習(xí)js的朋友可以看看2012-02-02ECMAScript?數(shù)據(jù)類型之Number類型
這篇文章主要介紹了?ECMAScript?數(shù)據(jù)類型之Number類型,Number類型使用IEEE?754格式表示整數(shù)和浮點(diǎn)值,更多相關(guān)內(nèi)容請(qǐng)需要的小伙伴參考下面文章內(nèi)容2022-06-06javascript input輸入框模糊提示功能的實(shí)現(xiàn)
這篇文章主要介紹了javascript input輸入框模糊提示功能的實(shí)現(xiàn)的相關(guān)資料,希望通過(guò)本能幫助到大家,需要的朋友可以參考下2017-09-09