最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一文讓您了解document.forms和document.formName的兼容性分析

 更新時(shí)間:2025年03月02日 22:42:06   投稿:mdxy-dxy  
今天在代碼中不小心寫了兩個(gè)name相同的form表單,然后通過(guò)document.forms[formName]形式獲取到的只有第一個(gè)表單,然后深入學(xué)習(xí)了下document.forms[formName]和document.formName的區(qū)別和兼容性

今天在代碼中不小心寫了兩個(gè)name相同的form表單,然后通過(guò)document.forms[formName]形式獲取到的只有第一個(gè)表單,然后深入學(xué)習(xí)了下document.forms[formName]和document.formName的區(qū)別和兼容性。

下面先測(cè)試了下document.forms[formName]、document.forms.formName、document.formName、document.forms(formName)的兼容性

一、當(dāng)表單name唯一時(shí)

<form action="test1" name="test">test1</form>

IE8下

IE8下

IE9下

IE9下

firefox下,版本63.0.1

firefox下,版本63.0.1

chrome下,版本68.0.3340.75

chrome下,版本68.0.3340.75

safari下,版本11.1.2

safari下,版本11.1.2

測(cè)試發(fā)現(xiàn):當(dāng)表單name唯一時(shí),在IE8版本,獲取表單的所有方法得到的是一個(gè)object對(duì)象,通過(guò)這個(gè)object無(wú)法獲取表單,而在firefox、chrome和safari下,不支持document.forms(formName)的形式獲取表單

二、當(dāng)表單name不唯一時(shí)

<form action="test1" name="test">test1</form>
<form action="test2" name="test">test2</form>

IE8下

IE8下

IE8下,獲取獲取第二個(gè)表單

IE8下,獲取獲取第二個(gè)表單

IE9下

IE9下

IE9下,獲取第二個(gè)表單

IE9下,獲取第二個(gè)表單

firefox下

firefox下

firefox下,獲取第二個(gè)表單

firefox下,獲取第二個(gè)表單

chrome下

chrome下

chrome下,獲取第二個(gè)表單

chrome下,獲取第二個(gè)表單

safari下

safari下

safari下,獲取第一個(gè)表單

safari下,獲取第一個(gè)表單

測(cè)試發(fā)現(xiàn):當(dāng)表單name不唯一時(shí),IE9下四種方式都返回了一個(gè)HTMLCollection對(duì)象,通過(guò)HTMLCollection[1]的形式可以獲取到第二個(gè)表單;在firefox、chrome和safari下,通過(guò)document.forms[formName]和document.forms.formName獲取到的都是第一個(gè)表單,而不是一個(gè)HTMLCollection對(duì)象,也就是說(shuō),通過(guò)這兩種方法是無(wú)法獲取到第i(i>1)個(gè)表單元素到;在document.formName方法則無(wú)論是在IE9、firefox、chrome還是safari下,都能獲取一個(gè)HTMLCollection對(duì)象,也就是說(shuō),可以通過(guò)這種方法,獲取到name相同的所有表單。 結(jié)論:

通過(guò)以上兼容性的測(cè)試,在不考慮IE8的情況下,推薦使用document.formName的形式獲取表單。
當(dāng)表單name唯一時(shí),通過(guò)document.formName的方法可獲得該表單;
當(dāng)表單name不唯一時(shí),通過(guò)document.formName的方法可以獲得一個(gè)HTMLCollection對(duì)象,通過(guò)HTMLCollection[i]的形式,可以獲得第i個(gè)表單。

document.formName.length結(jié)果是什么?

現(xiàn)在請(qǐng)思考下document.formName.length的結(jié)果是什么?是不是理所當(dāng)然的想,當(dāng)name唯一時(shí),返回1;當(dāng)name不唯一時(shí),有多少個(gè)name=formName的表單就返回幾。
我們還是用實(shí)例說(shuō)話吧:

<form name="test1">
	<input type="text" name="age" />
	<input type="text" />
	<div>表單name唯一</div>
</form>
<form name="test2">
	<input type="text" name="age" />
	<input type="text" />
	<div>表單name不唯一</div>
</form>
<form name="test2">
	<input type="text" name="age" />
</form>

document.test1.length // -->2
document.test2.length // -->2

實(shí)踐后發(fā)現(xiàn),當(dāng)表單name唯一時(shí),length為2;當(dāng)name不唯一(有兩個(gè))時(shí),也返回2。為什么呢?

當(dāng)name唯一時(shí),documen.formName返回的不是一個(gè)數(shù)組,所以一開始想得是length屬性不存在,document.formName.length應(yīng)該返回undefined,但是事實(shí)卻不是這樣。

當(dāng)name唯一時(shí),document.formName.length返回的是表單下輸入框的元素個(gè)數(shù),而當(dāng)name不唯一時(shí),返回的才是真正的表單個(gè)數(shù)。 那么如何判斷表單的name屬性是否唯一呢?

一般寫使用表單的話,下面一定會(huì)有輸入框,無(wú)論name屬性是否唯一,document.formName[0]都有值,但是當(dāng)name唯一下,document.formName[0][0]是沒有元素的,即結(jié)果為undefined,而當(dāng)name不唯一時(shí),document.formName[0][0]返回的是第一個(gè)表單下的第一個(gè)子元素

因此,可以通過(guò)document.formName[0][0]來(lái)判斷表單的name屬性是否唯一,當(dāng)返回結(jié)果為undefined時(shí),則表示name屬性唯一,否則即存在多個(gè)name相同當(dāng)表單 延伸:

通過(guò)document.formName.elements[subName]或document.formName.subName的形式可以獲取form下元素。

如:

<form name="test">
	<input type="text" name="myName" value="happy" />
</form>

<script>
	document.test.myName.value  // happy
</script>

參考:

Is it OK to have multiple HTML forms with the same name?

Javascript document.forms value does not work for Internet Explorer

到此這篇關(guān)于一文讓您了解document.forms和document.formName的兼容性分析的文章就介紹到這了,更多相關(guān)document.forms兼容性分析內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 整理Javascript基礎(chǔ)入門學(xué)習(xí)筆記

    整理Javascript基礎(chǔ)入門學(xué)習(xí)筆記

    整理Javascript基礎(chǔ)入門學(xué)習(xí)筆記,之前一系列的文章是跟我學(xué)習(xí)Javascript,本文就是進(jìn)一步學(xué)習(xí)javascript,希望大家繼續(xù)關(guān)注
    2015-11-11
  • JavaScript中兩種鏈?zhǔn)秸{(diào)用實(shí)現(xiàn)代碼

    JavaScript中兩種鏈?zhǔn)秸{(diào)用實(shí)現(xiàn)代碼

    方法鏈一般適合對(duì)一個(gè)對(duì)象進(jìn)行連續(xù)操作(集中在一句代碼)。一定程度上可以減少代碼量,缺點(diǎn)是它占用了函數(shù)的返回值。
    2011-01-01
  • JavaScript?顯示一個(gè)倒計(jì)時(shí)廣告牌的實(shí)現(xiàn)示例

    JavaScript?顯示一個(gè)倒計(jì)時(shí)廣告牌的實(shí)現(xiàn)示例

    本文主要介紹了JavaScript?顯示一個(gè)倒計(jì)時(shí)廣告牌的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Javascript 對(duì)cookie操作詳解及實(shí)例

    Javascript 對(duì)cookie操作詳解及實(shí)例

    這篇文章主要介紹了Javascript 對(duì)cookie操作詳解及實(shí)例的相關(guān)資料,大家在開發(fā)網(wǎng)站的時(shí)候,都會(huì)用到cookie 這里就詳細(xì)介紹下,需要的朋友可以參考下
    2016-12-12
  • canvas實(shí)現(xiàn)愛心和彩虹雨效果

    canvas實(shí)現(xiàn)愛心和彩虹雨效果

    本文主要介紹了canvas實(shí)現(xiàn)愛心和彩虹雨效果的實(shí)例,具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧
    2017-03-03
  • JavaScript實(shí)現(xiàn)顯示隱藏表單文字

    JavaScript實(shí)現(xiàn)顯示隱藏表單文字

    這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)顯示隱藏表單文字,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • document.createElement("A")比較不錯(cuò)的屬性

    document.createElement("A")比較不錯(cuò)的屬性

    document.createElement("A")比較不錯(cuò)的屬性...
    2007-08-08
  • uniapp實(shí)現(xiàn)注冊(cè)發(fā)送獲取驗(yàn)證碼功能

    uniapp實(shí)現(xiàn)注冊(cè)發(fā)送獲取驗(yàn)證碼功能

    隨著網(wǎng)絡(luò)的發(fā)達(dá),總會(huì)有人惡意注冊(cè)網(wǎng)站,而使用輸入驗(yàn)證碼功能可以有效的阻止這一類現(xiàn)象的發(fā)生,下面這篇文章主要給大家介紹了關(guān)于uniapp實(shí)現(xiàn)注冊(cè)發(fā)送獲取驗(yàn)證碼功能的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • 詳解javaScript中Number數(shù)字類型的使用

    詳解javaScript中Number數(shù)字類型的使用

    Number和Math都屬于JavaScript中的內(nèi)置對(duì)象,Number數(shù)字類型作為基礎(chǔ)數(shù)據(jù)類型,我們?cè)陂_發(fā)過(guò)程中會(huì)經(jīng)常用到,包括數(shù)字精度的格式化,還有字符串轉(zhuǎn)換成數(shù)字等操作。本文將詳細(xì)講解其用法,感興趣的可以了解一下
    2022-04-04
  • json實(shí)現(xiàn)添加、遍歷與刪除屬性的方法

    json實(shí)現(xiàn)添加、遍歷與刪除屬性的方法

    這篇文章主要介紹了json實(shí)現(xiàn)添加、遍歷與刪除屬性的方法,結(jié)合簡(jiǎn)單實(shí)例形式分析了json常見的添加、遍歷與刪除操作相關(guān)技巧,需要的朋友可以參考下
    2016-06-06

最新評(píng)論

通海县| 固始县| 农安县| 德阳市| 武陟县| 房山区| 资阳市| 汝城县| 子长县| 巨鹿县| 平塘县| 昌乐县| 海伦市| 库尔勒市| 环江| 碌曲县| 图木舒克市| 吉隆县| 陇川县| 闽清县| 东丽区| 兰西县| 文登市| 宝兴县| 阿图什市| 海淀区| 曲沃县| 桦川县| 托克托县| 南丹县| 盖州市| 潜江市| 应城市| 郯城县| 六安市| 无为县| 绩溪县| 栾城县| 肥城市| 巫山县| 长阳|