![](/img/trans.png)
[英]JavaScript runtime error Unable to get property 'value' of undefined or null reference
[英]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;
原因是txtDataRefInfo
, txtDataReferencia1Hidden
, txtDataReferencia2Hidden
是服务器端控件而不是客户端。 试试这个:
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.