2009-11-27 16 views
15

lo tanto, tengo 2 cuadros y quieren acceder a un elemento de un cuadro a otro:Javascript document.getElementById en otros marcos

marco 1:

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

marco 2:

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

div.innerHTML='something'; 

Esto de alguna manera no funciona en Firefox, así que quiero estar seguro, ¿puedo acceder al elemento en otro marco por su ID?

Respuesta

20

Puede consultar el otro marco mediante el uso de

window.frames["framename"] 

y luego se puede hacer referencia al elemento en el DOM utilizando

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

es así, no hay ninguna opción que el navegador encontraría primer elemento disponible con ID deseada sin importar en qué marco que residen? –

+3

@as: 'getElementByid' está restringido a buscar en el objeto' document' del cual es un método. Tenga en cuenta que un marco es, de hecho, un objeto 'window' separado, y un examen de la jerarquía' window'-> 'document' debería dejar en claro por qué un método en un' document' no puede examinar un 'document' en un diferente 'ventana'. – NickFitz

+5

No está dibujando wirking en cromo, 'window.frames ['framename']. Document' no tiene nada dentro. Me refiero a 'windows.franes ['framename']. Ducumnet.getElementById (...) ...' results 'Unkeught TypeError: no se puede llamar al método 'getElementByName' del error undefined'. –

12

El problema puede ser el marco actual que se encuentra. Si window.frames['framename'] no funciona, intente parent.frames['framename'] para acceder a los marcos de nivel superior.

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

funcionó para mí! ¡Gracias! – thsieh

1

que estaba teniendo problema con la versión JS, pero era capaz de utilizar estos ejemplos para una versión de jQuery trabajo:

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

O, si tienes ganas de probar suerte, sólo puede utilizar una parámetro numérico

window.frames[0].document

Cuestiones relacionadas