JavaScript运行时错误:无法获取属性'值'未定义或空引用

时间:2015-04-30 12:42:28

标签: javascript html asp.net

我写了一个javascript代码来显示特定日历的下一个日期

我的功能

@echo off

for /F "tokens=1* delims=:" %%a in ('findstr /N "^" test.txt') do (
   > file%%a.txt echo(%%b
)

HTML

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;
                }
            }

问题是页面在chrome中运行良好但是当我在IE中运行我的应用程序时会抛出错误

  

0x800a138f - JavaScript运行时错误:无法获取属性'值'   未定义或空引用

请帮助我克服这个问题。

<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>

6 个答案:

答案 0 :(得分:2)

问题在于:

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%>');

答案 1 :(得分:2)

您需要将控件上的ClientIDMode属性设置为:

ClientIDMode="Static"

这适用于.Net 4.0及更高版本

答案 2 :(得分:0)

为IE评论此行可能没问题:

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

答案 3 :(得分:0)

问题是txtDataReferencia1Hidden和txtDataReferencia2Hidden是控件的服务器名称,而不是客户端名称(从浏览器查看页面源)。

使用此功能:

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


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

答案 4 :(得分:0)

!|script|com.mycorp.fitnesse.ServerInterface| |ServerPort|${fitnesse.server.port}|

背后缺少某项操作

我希望你以这种方式写行(不要忘记使用if(document.getElementById("txtDataReferencia1Hidden") == null || document.getElementById("txtDataReferencia2Hidden") == null || document.getElementById("ddlDataPub") == null || document.getElementById("txtDataRefInfo") == null)的否定):

!

答案 5 :(得分:0)

您正在检查if语句中的元素是否为空 -

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并尝试获取该值。因此,未定义或空引用。