2011-11-01 81 views
0

我正在使用經典的ASP。javascript在同一個呈現的屏幕上的多個窗體

我有一個2包含有2種不同的形式。他們的名字都是獨一無二的。但是,當我嘗試讀取第二個窗體中的元素的值時,我得到一個錯誤,表示它爲空。但是,當我在Firebug中查看源代碼時,我可以看到,面對這個元素是有價值的。

我的javascript代碼:從螢火

console.log(document.getElementById('focusValue').value); 

輸出:

<input id="focusValue" type="hidden" value="1006" name="focusValue"> 

有什麼我需要做的,因爲有這個 「渲染」 屏幕上2種形式?我認爲我應該提到的另一件事是這些頁面在iFrame中。不知道這是否真的很重要...

+0

你能用「document.formname.focusValue.value」訪問它嗎? – dkretz

回答

0

一個iframe包含文檔中創建一個單獨的文件,會發生什麼,你需要獲得該文件的引用,然後才能訪問其內容。在http://www.dyn-web.com/tutorials/iframes/有一個合理的教程。

如果你只有在一個頁面的iFrame,那麼你可以通過引用它:

var frame = window.frames[0]; 

或者你可以使用一個id與的getElementById。要進入該文檔的參考:

var doc; 
if (frame) { 
    doc = frame.contentDocument || frame.contentWindow.document; 
} 

現在您可以在輸入元素:

var input = doc && doc.getElementById('focusValue'); 

當然,這一切都取決於你用相同的起源政策不符的,否則你無法訪問框架內容。

+0

謝謝你的回答...我試着做你的建議,但我得到一個錯誤:frame.contentWindow是未定義的(我也走了框架。 contentDocument也是未定義的)。我會說,當我警告看起來正確的「框架」變量。你有什麼其他的建議? – webdad3

+0

我不知道你如何得到undefined。如果代碼違反了相同的域規則,則您無權訪問該內容並應該得到相關的錯誤。如果iFrame沒有src屬性,那麼會有一個* contentWindow *對象(它是空的)。如果該屬性具有無效的URL,則根據瀏覽器的不同,您可能會也可能不會收到訪問錯誤。但不是「未定義」。你需要發佈HTML。 – RobG

0

看不到你的頁面,所以很難調試。假設腳本在表單之後運行。我唯一能想到的是頁面上有多個元素,其ID爲「focusValue」。

當你console.log(document.getElementById('focusValue'))

+0

我得到document.getElementById('focusValue')爲空 – webdad3

相關問題