Ошибка выполнения Microsoft JScript: «ноль» - ноль или не объект - PullRequest
4 голосов
/ 26 мая 2010

У меня есть приложение, где я могу создавать динамические вкладки. и удалите поперечную опцию на вкладках. Когда я пытаюсь удалить вкладку, я получаю сообщение об ошибке типа

Ошибка времени выполнения Microsoft JScript: 'null' является нулем или не является объектом и указывает на мой код JavaScript.

Вот мой код JS.

  <script type="text/javascript">
        /* <![CDATA[ */
        function deleteTab(tabText)
        {
            var tabStrip = $find("<%= RadTabStrip1.ClientID %>");
            var multiPage = $find("<%= RadMultiPage1.ClientID %>");
            var tab = tabStrip.findTabByText(tabText);
            var pageView = tab.get_pageView();

            var tabToSelect = tab.get_nextTab();
            if (!tabToSelect)
                tabToSelect = tab.get_previousTab();

            tabStrip.get_tabs().remove(tab);
            multiPage.get_pageViews().remove(pageView);

            if (tabToSelect)
                tabToSelect.set_selected(true);
        }
        /* ]]> */
</script>

и в страницу страницы

    if (!Page.IsPostBack)
    {
        RadTab tab = new RadTab();
        tab.Text = string.Format("New Page {0}", 1);
        RadTabStrip1.Tabs.Add(tab);

        RadPageView pageView = new RadPageView();
        pageView.Height = new Unit("50px");
        pageView.Width = new Unit("1300px");
        RadMultiPage1.PageViews.Add(pageView);

        BuildPageViewContents(pageView, RadTabStrip1.Tabs.Count);
        RadTabStrip1.SelectedIndex = 0;

    }

Ответы [ 3 ]

3 голосов
/ 26 мая 2010

Эта ошибка может возникнуть, если вы пытаетесь использовать объект null. В этом коде многие вещи могут возвращать null: $find, findTabByText, getPageView, get_nextTab, get_previousTab и т. Д. Я предлагаю вам предупредить () все перед использованием. Таким образом, вы найдете то, что null.

3 голосов
/ 26 мая 2010

Вы не проверяете ни один из этих вызовов функций, чтобы увидеть, действительно ли они что-то возвращают. Один из них возвращает null, но ваш код этого не замечает и пытается использовать результат в последующем утверждении.

Попробуйте это в Firefox с Firebug, и вы, вероятно, получите лучшие сообщения об ошибках.

0 голосов
/ 26 мая 2010

$ find может вернуть ноль, если вы пытаетесь вызвать его слишком рано. Помните, что элементы управления ASP.NET AJAX создаются во время события Sys.Application.Init. Если вы попытаетесь получить к ним доступ раньше (например, в window.onload), $ find () не будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...