从编写代码开始,我就设置了本地消息陷阱,以防向用户发送消息。陷阱就是这样。
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/