Ошибка JavaScript в странице содержимого ASP.NET - PullRequest
0 голосов
/ 10 января 2012
    <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 ]

1 голос
/ 10 января 2012

Когда ваш вызов "Test1 ()" внутри блока <script> происходит, это поле ввода еще не является частью DOM.Таким образом, вызов getElementById() вернет null, и первая строка функции не будет выполнена.

Если вы переместите блок <script> в после текстового поля, оноработа.

edit - также вы можете явно добавить «px» к вашей ширине.

0 голосов
/ 10 января 2012

Прежде всего, каждый раз, когда вы хотите выполнить код javascript, даже непосредственно из эфира тегов из событий, которые вам нужно ждать, чтобы загрузить уровень dom.Так что можете сделать что-то вроде:

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

Или выполнить свой код в событии "onload" тега body: например,

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

Или, если вы используете JQuery, вы можете использовать выше:

  <script type="text/javascript">
      $(document).ready(function(){
        /* Code to execute */
      });
  </script>
0 голосов
/ 10 января 2012

Это потому, что текстовое поле не существует, когда вы выполняете Test1 в сценарии.Вы должны либо поместить вызов в функцию document.ready, либо переместить его дальше вниз по странице после текстового поля.

0 голосов
/ 10 января 2012

попробуйте

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...