2009-11-27 82 views
15

所以,我有2個幀,並希望從一幀進入元件到另一:的JavaScript的document.getElementById中的其它幀

幀1:

<div id='someId'>...</div> 

框架2:

var div=document.getElementById('someId'); 

div.innerHTML='something'; 

這在某種程度上在Firefox中不起作用,所以我想確定一下,我可以通過它的ID訪問另一個框架中的元素嗎?

回答

20

您可以通過使用

window.frames["framename"] 

參照其他幀,然後可以使用

window.frames["framename"].document.getElementById ("yourelementid"); 
+0

所以,沒有選項,瀏覽器將發現第一個可用的元素與所需的ID在該框架駐留不管? – 2009-11-27 09:51:19

+3

@as:'getElementByid'被限制在查看它是一個方法的'document'對象。記住一個框架實際上是一個單獨的'window'對象,並且對'window'->'document'層次結構的檢查應該明確爲什麼一個'document'上的方法不能檢查不同的'窗口'。 – NickFitz 2009-11-27 10:18:01

+5

它在chrome中不是一無是處,'window.frames ['framename']。document'裏面沒有東西。我的意思是'windows.franes ['framename']。ducumnet.getElementById(...)...''結果'Uncaught TypeError:無法調用未定義錯誤的方法'getElementByName'。 – 2013-08-06 19:56:20

12

的問題可能是當前幀你是指在DOM元素。如果window.frames['framename']不起作用,請嘗試parent.frames['framename']訪問頂級框架。

if(parent.frames && parent.frames['framename']) { 
    var elem = parent.frames['framename'].document.getElementById(...); 
    // etc 
} 
+0

爲我工作!謝謝! – thsieh 2015-07-29 21:04:21

1

我是有JS的版本問題,但能夠使用這些實例的工作jQuery的版本:

var obj = $('#yourelementid', parent.frames["framename"].document); 
0

或者,如果你喜歡嘗試自己的運氣,你可以只使用一個數字參數。

window.frames[0].document

相關問題