我有应用程序,我可以在哪里创建动态标签。并删除选项卡上的横杆选项。当我试图删除选项卡时,我收到错误
Microsoft JScript运行时错误:'null'为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>
并在页面lode
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;
}
答案 0 :(得分:3)
你没有检查任何这些函数调用,看看他们是否真的返回了一些东西。其中一个是返回null
,但是您的代码没有注意到这一点,并尝试在后续语句中使用该结果。
在Firefox中使用Firebug尝试此操作,您可能会收到更好的错误消息。
答案 1 :(得分:3)
如果您尝试使用null
的对象,则会发生此错误。在那段代码中,很多东西都可以返回null
:$find, findTabByText, getPageView, get_nextTab, get_previousTab
等。我建议你在使用之前警告()一切。这样你就可以找到null
。
答案 2 :(得分:0)
$ find可以返回null。请记住,ASP.NET AJAX控件是在Sys.Application.Init事件期间创建的。如果您之前尝试访问它们(例如在window.onload中),则$ find()将无效。