2016-03-26 31 views
0

我想從父級index.html訪問iframe中的變量。從父級訪問iframe變量 - 未定義

中的index.html:

<!doctype html> 
<html lang="en-us"> 
    <head> 
    <title>Test</title> 
    </head> 
    <body> 
    <p>Test</p> 
    <div> 
    <iframe name="myIframe" id="test1" src="index2.html" width="100px" height="100px"></iframe> 
    </div> 
    <div> 
    <script type="text/javascript"> 
     var clickParent = document.getElementById("test1").contentDocument.clicks; 
     function onClickP() { 
      console.log("click on parent: " + clickParent); 
     }; 
    </script> 
    <button type="button" onClick="onClickP()">Click Parent Button</button> 
    </div> 
    </body> 
</html> 

iframe的index2.html:

<!doctype html> 
<html> 
<head> 
    <title>Clicks</title> 
</head> 

<body> 
    <script type="text/javascript"> 
    var clicks = 0; 
    function onClick() { 
     clicks += 1; 
     console.log("click counts: " + clicks) 
    }; 
    </script> 
    <button type="button" onClick="onClick()">Click Child Button</button> 
</body> 
</html> 

在控制檯中,所述可變clickParent是 「未定義」。如何解決這個問題,並使變量clickParent =點擊?

這個問題不是Sharing global javascript variable of a page with an iframe within that page的重複,因爲它是相反的。我想從父級訪問iframe的變量,而不是從子級訪問父級變量。我的問題,父母從iframe訪問的變量是「未定義的」。

任何答案將不勝感激。謝謝。

+0

[這](http://stackoverflow.com/questions/1451208/access-iframe-elements-in-javascript )可能會有幫助。 – Hang

+0

[在該頁面中共享具有iframe的頁面的全局JavaScript變量]的可能重複(http://stackoverflow.com/questions/7647042/sharing-global-javascript-variable-of-a-page-with-an- iframe-that-page) – Dexter

+0

@杭,謝謝你的鏈接。我試圖改變var clickParent = window.frames ['test1']。document.getElementById('clicks')。value;但它仍然是'未定義的'。 –

回答

1

可能是this的副本。

在父項中聲明全局變量,並使用parent.var_name將它們設置在iframe文檔中。

您也可以訪問孩子瓦爾通過爲子文檔創建一個對象:

child_iframe = document.getElementById("iframe_id").contentWindow; 
alert(child_iframe.var_name); 
+0

非常感謝你的答案和鏈接。我嘗試了你的建議,但是父類的變量(child_iframe.clicks)仍然是'未定義的'。 –

+0

您的父母文檔和您的iframe文檔存儲在同一個域中嗎? – Dexter

+0

是的,德克斯特。我找到了答案。我必須在函數加載之前先定義變量parentClick,例如parentClick = 0。那麼一切都像一個魅力。謝謝你,德克斯特和亨。 –