JavaScript 运行时错误 : Unable to set property

标签 javascript asp.net

从编写代码开始,我就设置了本地消息陷阱,以防向用户发送消息。陷阱就是这样。

Dim message As String = Nothing
        message = "bla bla bla"
        UserBirthDate.Text = Nothing
        LocalErrorMessage("InnerMessages", message)
        btnClr.Visible = True
        Return

Public Sub LocalErrorMessage(DivID As String, Message As String)
        errorCall = False
        Dim cstype As Type = Me.GetType()
        Dim innerMess As String = Message
        Dim url As String = HttpContext.Current.Request.Url.AbsoluteUri
        Dim script As String = "InnerMessages('" + DivID + "', '" + innerMess + "')"
        If Not Page.ClientScript.IsStartupScriptRegistered(Me.GetType(), "MessageDiv") Then
            Page.ClientScript.RegisterStartupScript(cstype, "MessageDiv", script, True)
        End If
    End Sub

我还在代码的开头设置了一个小的 java 脚本。

<script type="text/javascript">
    function InnerMessages(TagID, mess) {
        document.getElementById(TagID).innerHTML = mess + '<br/><hr/>'; 
      }
    </script>

所有问题都工作正常......我必须继续编写我的代码(这是一个用户注册页面)。直到今天一切都很顺利...当我看到一条消息一次...并且工作正常...因为这次再也不起作用...
总是向我抛出错误

JavaScript runtime error: Unable to set property 'innerHTML' of undefined or null reference

所以我设置了另一个脚本

<script type="text/javascript">
    window.onload = getTag()
    function getTag() {
        var pWin = window.parent.document;
        return pWin;
    }

我修改了最初的

</script>
    <script type="text/javascript">
    function InnerMessages(TagID, mess) {
    var myTD = getTag();
    var t = myTD.forms.Form.childNodes;
    var s = t['355'].childNodes['0'].nodeValue;
    document.getElementById(TagID).innerHTML = mess + '<br/><hr/>'; 
      }
    </script>

这有效一次或两次...但不再有效...
我不明白为什么会发生这种情况...

有人可以帮助我吗?

最佳答案

您应该确保 document.getElementById(TagID) 实际上返回一个对象。看起来您可能正在使用可以更改 id 的 ASP.Net。和/或者这可能是一个时间问题。元素确实存在但在代码执行时不存在的地方。要解决此问题,请不要执行 javascript 代码,直到某些事件已通过(document.onload 或 jQuery 有 .ready)

此代码示例解决了计时问题和更改 id。

$(document).ready(init);

function init() {
    //code here executes after the page is loaded    
    $("#textBox1").val("This might not work, as the id of the control might have changed.");
    $("input[id$='textBox1']").val("This is more likely to work since asp prefixes the id");
    $(".someClass").val("Using a css class is more a more  typical jQuery approach");
    $("<%= textBox1.ClientID %>").val("Force asp.net to fix the id, however (see below)")
}
  • 最后一种方法的问题是您的 aspx 文件中现在包含 C#。这可能会导致其他问题并被认为是糟糕的设计。

关于JavaScript 运行时错误 : Unable to set property,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27038560/

相关文章:

c# - 在 ASP.Net 中使用 AJAX PageMethods 从数据库实现 jQuery AutoComplete TextBox

javascript - 使用javascript在服务器中下载文件

javascript - 如何在 jquery 中将值从一个 div 面板转移到另一个?

javascript - ionic 想要 e.detail.scrollBottom

javascript - 如何在 Vue.js 中使用 ListView ?

asp.net - 如何将图像上传到 Razor 页面中的模型?

asp.net - 在 Treeview 中设置 <tr> 样式

javascript - 如何使用javascript将图像随机插入到表格中?

javascript - 在 Opencart 中实现不同的 disqus 短名称

asp.net - 生成重置密码 token 在 Azure 网站中不起作用