2013-06-27 49 views
0

我试图在Oracle Apex网页上使用JavaScript函数。目标是有一个链接,当最初点击时,打开所有的子区域,当再次点击时,关闭所有的子区域。本质上,一个简单的切换。功能如下:Oracle Apex中的Javascript,“无法调用未定义的方法substr”

initContentFrameTabs = function(){ 
$('div.uFrameRegionSelector > ul li a').click(function(e){ 
e.preventDefault(); 
link = $(this); 
subregions = link.parents('.uFrameMain').find('section.uHideShowRegion'); 
link.parents("ul").find('li a').removeClass('active') 

if (link.hasClass('showAllLink')) { 
    expandAllSections(); 
    // subregions.show(); 
    link.addClass('active'); 
    document.getElementById('Title').innerHTML = 'Hide All'; 
} else if (link.hasClass('active')) { 
    hideAllSections(); 
    link.parents("ul").find('li a').removeClass('active') 
    document.getElementById('Title').innerHTML = 'Show All'; 
} else { 
    expandSection(link.attr('id').substr(4)); 
    // subregions.hide(); 
    // $('#'+link.attr('id').substr(4)).show(); 
    link.addClass('active') 
} 
}) 
} 

它似乎开始工作,因为我点击我的链接,它会打开所有子区域和文本变化,以反映它的新功能,即隐藏所有。
但是,从那时起,它不起作用。我收到一个错误在这一点上,作为:

Uncaught TypeError: Cannot call method 'substr' of undefined

它声称此错误是在我的子线扔,就在else子句之后。
任何人都可以阐明为什么会发生这种情况?

回答

1

好吧,它看起来像link.attr('id')是未定义的。所以我会看看在你最初的点击之后,这个链接是否仍然有一个ID属性。很有可能,链接被重新创建,并且不是第二次使用id创建的。

首先,在您的链接之后,打开您的DOM并查看该链接是否仍具有该属性。

相关问题