2017-08-21 50 views
0

如果兩個屬性具有相同的值,例如id="xyz" name="xyz",那麼對html控件屬性給出的首選項是什麼?給予具有相同值的屬性的html控件屬性的首選項

我的碼片,如下所示:

<iframe scrolling="no" width="100%" name="topFrame" id="topFrame" frameborder="0" height="100%" runat="server"></iframe> 

我試圖通過屬性來訪問iframe中。所以當我調用iframe作爲javascript:parent.frames['topFrame']與其中一個將是首選的值

+0

偏好爲了什麼?這些是用於不同事物的不同屬性。 –

+0

具有相同值的屬性無關緊要;他們沒有關係。 –

+0

您的屬性不具有相同的名稱,具有相同的值。我已更新你的問題,但不明白你在問什麼 – mplungjan

回答

0

並非所有的HTML對象可以有名稱和命名的東西,但表單元素可能不推薦使用。

在你的情況的偏好是不相關的,但你如何訪問框架是:

使用的parent.frames['topFrame']的DOM訪問將使用的名稱除了在名稱/ ID或幀集合被超載的瀏覽器 - 但你需要的位置:

<a href="javascript:parent.frames['topFrame'].location='otherpage'">... 

如果你想使用的ID,你需要SRC

<a href="javascript:parent.document.getElementById('topFrame').src='otherpage'">... 
+0

「將永遠使用名稱」 - 這是不正確的:http://jsbin.com/kecubaqabo/1/edit?html,js,console – Quentin

+0

@Quentin這是愚蠢的瀏覽器執行:(讓我想起IE的重載名稱,所以你可以做document.getElementById(「objectname」) – mplungjan

+0

這是HTML 5規範所要求的 – Quentin

0

首先要注意的是THA牛逼window.framesjust an aliaswindow

窗口,框架和自IDL屬性都必須返回窗口對象的瀏覽器上下文的WindowProxy對象。

規範的相關部分是here

在任何時刻支持的屬性名稱由以下的,按照樹形結構順序,而忽略後面重複:

  • 瀏覽器上下文名稱不是空字符串的活動文檔的任何子瀏覽上下文的名稱,
  • 所有a,applet,area,emb的name內容屬性的值ed,form,frameset,img以及具有非空名稱內容屬性的活動文檔中的對象元素,並且
  • 具有非空id的活動文檔中的任何HTML元素的id content屬性的值內容屬性。

所以不要緊哪一個是「首選」。

如果元素的ID和名稱相同,則將使用一個名稱來確定名稱,而另一個將被忽略。如果使用id="a",並且name="a"被忽略,則獲得a。如果是反過來,你會仍然得到a

如果元素的ID和名稱不同,那麼它們都可以用來引用它。

如果兩個不同的元素在它們的名稱和id屬性之間共享一個值,那麼無論哪個元素首先出現都將採用該名稱。使用哪個特定屬性並不重要。


不建議直接使用id和name屬性。它們可以與窗口對象的現有屬性衝突。最好使用getElementByIdquerySelector,這樣你可以明確地說你正在尋找DOM中的一個元素。

相關問題