2014-06-11 55 views
0

是否需要在此reference中使用if語句?難道不是這樣工作的:使用click()方法使用隱藏文件輸入元素

var fileSelect = document.getElementById("fileSelect"), 
    fileElem = document.getElementById("fileElem"); 

fileSelect.addEventListener("click", function (e) { 
    fileElem.click(); 
    e.preventDefault(); // prevent navigation to "#" 
}, false); 
+0

這可能會導致NPE異常,如果fileElem爲null。 –

+0

@Nisha javascript沒有NPE,它只是一個未定義的元素錯誤 –

+0

@RUJordan:是的,你是對的。我正是這個意思。與Java和JavaScript混淆:) –

回答

0

是其needed.What如果您fileElem給你exceptions.You必須處理得當使用if語句。

+0

「_What如果你的fileElem給你異常._」怎麼會發生?你介意提供一個例子嗎? – Mori

+0

如果將未定義的值設置爲fileElem,該怎麼辦?它會給你例外的權利。你有處理它。作爲程序員,你應該遵循一些標準。 – Coder

0

只要你確定總是定義,它不是100%需要的。如果它沒有定義,你可能得到一個控制檯錯誤線沿線的:

TypeError: cannot call method 'click' of undefined 

因此,在短期:不,這不是必要的,但不使用它會冒着錯誤。

+0

感謝您的回答,但正如您在參考文獻中所看到的那樣,對吧?然後它是多餘的。 – Mori

+0

@Mori如果'fileElem'被覆蓋,或者範圍被改變,或者元素被從DOM中移除,會發生什麼?就像我說的那樣,這不是必要的,但是最好的做法是保持它的正確性。 –

0

如果聲明不完全必要。如果你已經定義了文件元素,那麼未定義的異常不會發生。

,並沒有如它的工作:看demo

代碼:

var fileSelect = document.getElementById("fileSelect"), 
    fileElem = document.getElementById("fileElem"); 

fileSelect.addEventListener("click", function (e) { 
    fileElem.click(); 
    e.preventDefault(); // prevent navigation to "#" 
}, false); 
+0

發佈不變的代碼真的有必要嗎? –

+0

是@RJJordan。但不幸的是Jsfiddle鏈接的答案也需要代碼。 – Manwal