从我的代码编写开始,我设置了一个本地消息陷阱,以便向用户发送消息。陷阱就是这样。
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运行时错误:无法设置属性&lt; innerHTML&#39;未定义或空引用
所以我设置了另一个脚本
<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>
有效一两次......但不再有......
我无法理解为什么会发生这种情况......
有人可以帮助我吗?
答案 0 :(得分:1)
您应确保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)")
}
答案 1 :(得分:0)
我最终使用以下脚本来解决我的问题
<asp:Panel ID="ErrorPanel" runat="server" CssClass="RegErrPanel" Enabled="true" ViewStateMode="Enabled">
<div id="LocalMessages" runat="server" title="LocalError Messages" class="regErrorDiv">
<script type="text/javascript">
function InnerMessages(TagID, mess) {
var t = window.document.forms.Form.getElementsByTagName('div')
t[TagID].innerHTML = mess + '<br/><hr/>';
}
</script>
</div>
<br /><br />
<asp:ValidationSummary ID="RegisterValidationSummary" runat="server" CssClass="RegValidSummary" ValidationGroup="SetUserValGroup" ForeColor="Red" />
<asp:Button ID="btnClr" runat="server" Text="Καθαρισμός" Visible="false" OnClientClick="<%btnClr_Click%>" CssClass="RegErrCleanUp" />
</asp:Panel>