2009-11-27 27 views
15

như vậy, tôi có 2 khung và muốn truy cập đến phần tử từ một khung hình thành khác:javascript document.getElementById trong khung khác

khung 1:

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

khung 2:

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

div.innerHTML='something'; 

điều này bằng cách nào đó không hoạt động trong Firefox vì vậy tôi muốn chắc chắn, tôi có thể truy cập vào phần tử trong khung khác bằng ID của nó không?

Trả lời

20

Bạn có thể tham khảo các khung khác bằng cách sử dụng

window.frames["framename"] 

và sau đó bạn có thể tham khảo các phần tử trong DOM bằng cách sử dụng

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

vậy, không có tùy chọn trình duyệt sẽ tìm phần tử có sẵn đầu tiên với ID mong muốn bất kể khung nằm ở đâu? –

+3

@as: 'getElementByid' bị giới hạn tìm trong đối tượng' tài liệu' mà nó là phương thức. Hãy nhớ rằng một khung thực tế là một đối tượng 'window' riêng biệt và việc kiểm tra phân cấp' window'-> 'document' sẽ làm rõ lý do tại sao một phương thức trên một tài liệu' không thể kiểm tra một 'tài liệu' trong một khác nhau 'cửa sổ'. – NickFitz

+5

Nó không có trong chrome, 'window.frames ['framename']. Document' không có gì bên trong nó. Tôi có nghĩa là 'windows.franes ['framename']. Ducumnet.getElementById (...) ...' kết quả 'Uncaught TypeError: Không thể gọi phương thức 'getElementByName' của undefined' lỗi. –

12

Vấn đề này có thể là khung hiện tại bạn đang ở trong. Nếu window.frames['framename'] không hoạt động, hãy thử parent.frames['framename'] để truy cập các khung cấp cao nhất.

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

đã làm việc cho tôi! Cảm ơn! – thsieh

1

Tôi đã có vấn đề với các phiên bản JS nhưng đã có thể sử dụng các ví dụ cho một phiên bản jQuery làm việc:

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

Hoặc, nếu bạn cảm thấy như thử vận ​​may của bạn, bạn có thể chỉ cần sử dụng một tham số số.

window.frames[0].document

Các vấn đề liên quan