2012-12-27 15 views
0

由於某種原因,下面的代碼不工作。我需要它分配一個ID到一個對象。我在下面做錯了什麼?使用javascript爲對象(僅一個)分配ID

var frame = document.getElementsByTagName("iframe").setAttribute("id","iframe"); 

我有一個jQuery庫安裝,如果它應該有任何用處。

+0

'getElementsByTagName()'返回一個NodeList(https://developer.mozilla.org/en-US/docs/DOM/NodeList)。它是一個類似數組的對象,它包含對DOM對象的引用。 https://developer.mozilla.org/zh-CN/docs/DOM/element.getElementsByTagName – Teemu

回答

1

由於您使用jQuery的可以讓這個更簡單:

$('iframe').attr('id', 'iframe'); // or: 
$('iframe').prop('id', 'iframe'); 

這會影響網頁上的所有 的元件,因此你最好只有一個。重複的ID是重要的業務。他們打破東西,你真的需要避免它們。您可以鏈接.first()或使用iframe:first選擇器確保您只定位第一個元素。


這裏是jQuery的少的解決方案,也只是第一:

var frame = document.getElementsByTagName("iframe")[0]; 
frame.id = 'iframe'; 

1號線:實際上,你想在frame(第一)iframe元素。
第2行:該ID可作爲屬性,因此您可以使用.id而不是setAttribute

+0

謝謝!我不知道它會返回一個數組,這解決了我的問題! – Ivotje50

2

假設你的目標找到的第一個IFRAME:

var frame = document.getElementsByTagName("iframe")[0]; 
frame.setAttribute("id","iframe"); 

的原因,你需要的[0]指數是getElementsByTagName將返回與該標籤名的所有元素的集合,即使只有一個。

而且,正如ThiefMaster所說,您也可以使用frame.id = "iframe";而不是setAttribute

0

試試這個。

<script> 
var frame = document.getElementsByTagName("iframe")[0].id="iframe1"; 
alert(document.getElementById("iframe1").name); 
</script> 
相關問題