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

时间:2012-01-10 14:01:01

标签: javascript asp.net webforms

    <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)时出现错误。但当它调用点击按钮时,它工作正常。如何从脚本调用该函数(或者我如何访问onload()中的ASP.NET Content Page函数)?

4 个答案:

答案 0 :(得分:1)

当你在<script>块内调用“Test1()”时,该输入字段还不是DOM的一部分。因此,对getElementById()的调用将返回null,函数的第一行将失败。

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

编辑 - 您也可以在宽度上明确附加“px”。

答案 1 :(得分:0)

试试这个

<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>

答案 2 :(得分:0)

这是因为在脚本中执行Test1时文本框不存在。您必须将调用放在document.ready函数中,或者在文本框后面向下移动。

答案 3 :(得分:0)

首先,您每次要执行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>