簡體   English   中英

JavaScript運行時錯誤:無法獲取未定義或空引用的屬性“值”

[英]JavaScript runtime error: Unable to get property 'value' of undefined or null reference

我寫了一個javascript代碼來顯示特定日歷的下一個日期

我的功能

function verificaDataReferencia(mensagem)
            {   
                if(document.getElementById("txtDataReferencia1Hidden") == null || document.getElementById("txtDataReferencia2Hidden") == null || document.getElementById("ddlDataPub") == null || document.getElementById("txtDataRefInfo") == null)

                var objtxtDataReferencia1Hidden = document.getElementById("txtDataReferencia1Hidden").value;

                var objtxtDataReferencia2Hidden = document.getElementById("txtDataReferencia2Hidden").value;

                > Breakpoint var objtxtDataArquivo = document.getElementById("ddlDataPub").value;

                var mensagem = document.getElementById("txtDataRefInfo").value;
                if((objtxtDataReferencia1Hidden == objtxtDataArquivo) || (objtxtDataReferencia2Hidden == objtxtDataArquivo))
                {
                    var x = alert(mensagem);
                    return x;
                }
            }

HTML

<asp:TextBox style="Z-INDEX: 112; POSITION: absolute; TOP: 9px; LEFT: 572px" id="txtDataReferencia1Hidden"
                                            runat="server" CssClass="inputLabel" Width="15" Height="15px"></asp:TextBox>
                                        <asp:TextBox style="Z-INDEX: 113; POSITION: absolute; TOP: 9px; LEFT: 606px" id="txtDataReferencia2Hidden"
                                            runat="server" CssClass="inputLabel" Width="14" Height="14px"></asp:TextBox>

問題是頁面在chrome中運行良好但是當我在IE中運行我的應用程序時它會拋出一個錯誤

0x800a138f - JavaScript運行時錯誤:無法獲取未定義或空引用的屬性“值”

請幫助我克服這個問題。

private void Page_Load(object sender, System.EventArgs e)
        {

            if(! IsPostBack)
            {   
                txtNomePortugues.SetFocus();
                BO.Pasta pasta = new BO.Pasta(CodPasta);
                if (CodigoArquivo == 0 && !IsJustificativa && pasta.EnviaEmail)
                    btnGravar.Attributes.Add("onclick", "verificaDataReferencia(); confirmaEnvioEmail('" + GetString("Mensagem_Confirmacao_Alerta_Arquivos") + "');");
                else
                    btnGravar.Attributes.Add("onclick", "verificaDataReferencia();");

問題在於:

var mensagem = document.getElementById("txtDataRefInfo").value;
var objtxtDataReferencia1Hidden = document.getElementById("txtDataReferencia1Hidden").value;
var objtxtDataReferencia2Hidden = document.getElementById("txtDataReferencia2Hidden").value;

原因是txtDataRefInfotxtDataReferencia1HiddentxtDataReferencia2Hidden是服務器端控件而不是客戶端。 試試這個:

var objtxtDataReferencia1Hidden = document.getElementById('<%=txtDataReferencia1Hidden.ClientID%>');
var objtxtDataReferencia2Hidden = document.getElementById('<%=txtDataReferencia2Hidden.ClientID%>');
var mensagem = document.getElementById('<%=txtDataRefInfo.ClientID%>');

您需要將控件上的ClientIDMode屬性設置為:

ClientIDMode="Static"

這適用於.Net 4.0及更高版本

為IE評論此行可能沒問題:

// > Breakpoint var objtxtDataArquivo = document.getElementById("ddlDataPub").value;

問題是txtDataReferencia1Hidden和txtDataReferencia2Hidden是控件的服務器名稱,而不是客戶端名稱(從瀏覽器查看頁面源)。

用這個:


 var objtxtDataReferencia1Hidden = document.getElementById('<%=txtDataReferencia1Hidden.ClientID%>');


 var objtxtDataReferencia2Hidden = document.getElementById('<%=txtDataReferencia2Hidden.ClientID%>');

if(document.getElementById("txtDataReferencia1Hidden") == null || document.getElementById("txtDataReferencia2Hidden") == null || document.getElementById("ddlDataPub") == null || document.getElementById("txtDataRefInfo") == null)后面缺少一個動作if(document.getElementById("txtDataReferencia1Hidden") == null || document.getElementById("txtDataReferencia2Hidden") == null || document.getElementById("ddlDataPub") == null || document.getElementById("txtDataRefInfo") == null)

我希望你用這種方式寫行(不要忘記使用! ):

if(!document.getElementById("txtDataReferencia1Hidden") || !document.getElementById("txtDataReferencia2Hidden") || !document.getElementById("ddlDataPub") || !document.getElementById("txtDataRefInfo")) return;

您正在檢查if語句中的元素是否為null -

if(document.getElementById("txtDataReferencia1Hidden") == null || document.getElementById("txtDataReferencia2Hidden") == null || document.getElementById("ddlDataPub") == null || document.getElementById("txtDataRefInfo") == null)

但即使它們為空,你也試圖獲得價值。 例如:

var mensagem = document.getElementById("txtDataRefInfo").value;

因此,如果“txtDataRefInfo”為null,則語句將返回true並嘗試獲取該值。 因此,未定義或空引用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM