2009-11-27 6 views
15

donc, j'ai 2 cadres et que vous souhaitez accéder à l'élément d'une image dans une autre:javascript document.getElementById dans d'autres cadres

image 1:

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

cadre 2:

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

div.innerHTML='something'; 

cela ne fonctionne d'aucune façon dans Firefox donc je veux être sûr, puis-je accéder à l'élément dans un autre cadre par son ID?

Répondre

20

Vous pouvez consulter l'autre cadre à l'aide

window.frames["framename"] 

et vous pouvez renvoyer l'élément dans le DOM en utilisant

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

donc, il n'y a pas d'option que navigateur trouverait premier élément disponible avec ID désiré, peu importe dans quel cadre qui résident? –

+3

@as: 'getElementByid' est limité à la recherche dans l'objet' document' dont il est une méthode. Gardez à l'esprit qu'une image est en fait un objet 'window' distinct, et un examen de la hiérarchie' window'-> 'document' devrait clarifier pourquoi une méthode sur un' document' ne peut pas examiner un 'document' dans un différent 'window'. – NickFitz

+5

Il ne s'agit pas de chrome, 'window.frames ['framename']. Document' n'a rien dedans. Je veux dire 'windows.franes ['framename']. Ducumnet.getElementById (...) ...' résultats 'Uncaught TypeError: Impossible d'appeler la méthode 'getElementByName' de l'erreur undefined'. –

12

Le problème peut être le cadre actuel, vous êtes. Si window.frames['framename'] ne fonctionne pas, essayez parent.frames['framename'] pour accéder aux cadres de niveau supérieur.

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

a travaillé pour moi! Merci! – thsieh

1

j'avoir problème avec la version JS, mais a été en mesure d'utiliser ces exemples pour une version jQuery travail:

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

Ou, si vous vous sentez comme tenter votre chance, vous pouvez simplement utiliser un paramètre numérique.

window.frames[0].document

Questions connexes