2013-11-04 28 views
0

返回undefined我有一個JavaScript函數的問題:的document.getElementById(...)在Firefox

JS代碼:

function ouvrirPopupAvecImprEcran(){ 
    var name= document.getElementById("myForm:currentName").value; 
    var code= document.getElementById("myForm:currentCode").value; 
... 
} 

此功能與Chrome的工作,但是當我嘗試用Firefox ,函數getElementById返回「undefined」。我查看了我生成的HTML輸出,看看這個ID是否已經存在,但他們沒有。

生成的HTML輸出:

<form id="myForm" name="myForm" method="post" action="/MyProject/p/handleTest.jsf" enctype="application/x-www-form-urlencoded"> 
    <select id="myForm:currentName" size="1" name="myForm:currentName"> 
    ... 
    </select> 
    ... 
    <input name="myForm:j_idt556" value="Print" onclick="return ouvrirPopupAvecImprEcran();" type="submit"> 
    ... 
    <input id="myForm:currentCode" name="myForm:currentCode" value="Hey" type="hidden"> 
</form> 

我不明白爲什麼這個代碼不工作在Firefox。

請問您能幫我嗎?

謝謝。

+2

[你的代碼(http://jsfiddle.net/jF9eX/)不告訴你在Firefox 24.0或25.0說明問題。 – Quentin

+0

我使用Firefox 24.0 – TronchDeYack

+0

提供的代碼在FIrefox中工作正常。還有其他的錯誤。 http://jsfiddle.net/n7mfw/ – Popnoodles

回答

-1

這可能是Firefox在ID字符串冒號的冒號。你可以通過在\\之前嘗試逃避冒號嗎?

+0

我沒有在我的id名稱中使用冒號,它是自動生成的。在我的xhtml代碼中,例如,我有。 – TronchDeYack

+0

沒關係。無論代碼是自動生成還是自定義,Javascript都不關心這一點。冒號是CSS和JS的特殊字符,因此在字符串或選擇器中使用時需要轉義。 – Nzall

+0

@nzall對於'getElementById'冒號不是問題,至少它不應該是一個。對於'querySelector',它需要被轉義,因爲僞類在開始處有一個':'。 –

-1

變化在 「:」。對於 「_」

,以html

以JavaScript

變種名稱=的document.getElementById( 「myForm_currentName」)值;

試試這個

相關問題