2013-01-16 26 views
0

我試圖找出爲什麼我收到的錯誤:JavaScript錯誤

"window.opener.document.aspnetForm.formType is null or not an object".

我從父窗口傳遞一個值通過URL字符串的彈出窗口(這個孩子窗口是搜索表單)。 此值是一個SharePoint表單字段的ID(這是我需要這樣做的原因,該值指示它是來自newform還是editform)。 我聲明在在子窗口中使用函數的URL字符串獲取值的變量formType(geturlvalue()),

var formType = geturlvalue(name);

變量「formType」是工作在子窗口罰款,前開窗器提醒它顯示這是 ctl00_m_g_004d943c_bb99_4fba_bee5_68862443b98d_ctl00_ctl04_ctl18_ctl00_ctl00_ctl04_ctl00_ctl00_TextField

這裏的父窗口的正確值在子窗口開門紅:

window.opener.document.aspnetForm.formType.value = document.getElementById('Server').value; 

開啓者需要從ID爲Server的子窗口字段中的值填充父窗口中的輸入字段。

任何人有任何想法,爲什麼我在formType上得到錯誤?如果我在的地方formType的添加ctl00_m_g_004d943c_bb99_4fba_bee5_68862443b98d_ctl00_ctl04_ctl18_ctl00_ctl00_ctl04_ctl00_ctl00_TextField在首戰它的作品,因爲它應該和填充母輸入字段:

window.opener.document.aspnetForm.ctl00_m_g_004d943c_bb99_4fba_bee5_68862443b98d_ctl00_ctl04_ctl18_ctl00_ctl00_ctl04_ctl00_ctl00_TextField.value =的document.getElementById(「服務器」)值;

回答

0

不是很詳細的問題,試試吧。

window.opener.document.aspnetForm.formType.value = document.getElementById('Server').value; 

這是什麼:

我真的被你弄得線?

確保您的形式有一個名稱=「aspnetForm」(不是ID),如果你想使用:

window.opener.document.aspnetForm 

,並確保您的表單元素都有一個名稱=「formType」(不一個id),如果你想使用:

window.opener.document.aspnetForm.formType.value = ... 

我不知道你是如何想到VAR formType是window.opener.document的一部分,但也許你已經定義了所有的東西在代碼的其他地方,那麼也許你應該發佈更多的代碼,以便讓其他人瞭解您的程序中發生了什麼。

+0

我只是編輯它更加清晰。僅供參考,這是在SharePoint 2007中完成的。 – user1542715

1

貌似formType是在父窗口元素的ID,所以在這種情況下,你需要這樣的代碼:

window.opener.document.getElementById(formType).value = document.getElementById('Server').value; 
+0

就是這樣!當我早些時候嘗試這個時,我忘了刪除aspnetForm。簡單的疏忽會讓我們發瘋。謝謝你的幫助! – user1542715

+0

這就是我們在這裏。 :) –

+0

我quess我說的是一樣的,但不完全像懷孕。 – Lemonade