2017-08-03 22 views
-2

讀取屬性我有我的網頁上這樣js代碼:無法從我的document.forms

var mail = 'idEmail'; 
value(mail); 
//function returning the value of an input 
function value(input){ 
    return eval('window.document.Search.'+input).value; 
} 

我有這樣的錯誤:

TypeError: Cannot read property 'idEmail' of undefined 

爲什麼當我改變由return eval('window.document.forms['Search'].'+input).value;return eval('window.document.Search.'+input).value;它的工作?

document.forms["general"] 
or 
document.forms[0] 
or 
document.general 

這是相同的

+2

因爲你在第一個版本中忘記了'.forms' – Kaddath

+0

呵呵,因爲大聲哭泣,不要用'eval'廢話... https://stackoverflow.com/questions/4244896/dynamically-access-object- property-using-variable – CBroe

回答

1

因爲你忘了forms部分:

return eval('window.document.forms.Search.'+input).value; 

注意eval是邪惡的。你不妨這樣做:

return document.forms.Search[input].value; 
+1

'return document.forms.Search [input] .value;' –

+2

這就是爲什麼eval是邪惡的[爲什麼使用JavaScript eval函數是一個壞主意?](https://stackoverflow.com/questions/86513 /爲什麼 - 是 - 使用最JavaScript的的eval函數-A-壞主意) – Liam

1

在你function您試圖訪問一個undefined對象的屬性,其實.Search不是window.document而是的window.document.forms的屬性,這樣的更改:

function value(input){ 
    return window.document.forms.Search[input].value; 
} 

注:

這是更好地避免使用eval,你可以擺脫它在你的函數。