内容页面中的 JavaScript 错误 ASP.NET

javascript error in ASP.NET content page

本文关键字:JavaScript 错误 ASP NET      更新时间:2023-09-26
    <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<script type="text/javascript">
    function Test1(w) {
        document.getElementById('<%=TextBox1.ClientID%>').style.width = w;
        return false;
    }
    Test1(10); // This line arises an error. Why ?
</script>
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    <input id="Button1" type="button" value="button" onclick="Test1(10)" />
</asp:Content>

从脚本调用函数 Test1(10( 时出现错误。但是当它调用单击按钮时,它工作正常。如何从脚本调用函数(或者如何在ASP.NET Content Page中访问onload()函数(?

当您在

<script>块中调用"Test1(("时,该输入字段还不是DOM的一部分。因此,对 getElementById() 的调用将返回null并且函数的第一行将失败。

如果将<script>块移动到文本框之后,它应该可以工作。

编辑 — 您可能还希望将"px"显式附加到宽度。

试试这个

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<script type="text/javascript">
    function Test1(w) {
        document.getElementById('<%=TextBox1.ClientID%>').style.width = w;
        return false;
    }
window.onload = function() {
    Test1(10); // This line arises an error. Why ?
}
</script>
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    <input id="Button1" type="button" value="button" onclick="Test1(10)" />
</asp:Content>
这是因为

在脚本中执行 Test1 时文本框不存在。 您必须将调用放在 document.ready 函数中,或者将其进一步移动到页面下方的文本框之后。

首先,每次你想执行javascript代码时,即使是直接从标签以太从事件中,你也必须等待加载dom级别。所以可以做这样的事情:

  <script type="text/javascript">
      window.onload =function()
      { /* code */ }
  </script>

或者在 body 标签的 "onload" 事件中执行您的代码:喜欢

    <body onload="Test1(10);">
    </body>

或者如果你使用JQuery,你可以使用上面的:

  <script type="text/javascript">
      $(document).ready(function(){
        /* Code to execute */
      });
  </script>