0

我正在尝试在 Oracle Apex 网页上使用JavaScript函数。对象是有一个链接,当最初单击时,打开所有子区域,再次单击时,关闭所有子区域。本质上,一个简单的切换。功能如下:

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')
 }
})
}

它最初似乎可以工作,当我单击我的链接时,它会打开所有子区域并且文本会更改以反映它的新功能,即隐藏全部。
但是,从那时起,它就不起作用了。那时我收到一个错误,即:

未捕获的类型错误:无法调用未定义的方法“substr”

它声称这个错误被抛出在我的子字符串行,就在 else 子句之后。
任何人都可以阐明为什么会这样吗?

4

1 回答 1

1

好吧,看起来 link.attr('id') 是未定义的。因此,我会看看在您初次点击后该链接是否仍然具有 ID 属性。很可能,该链接已重新创建,并且第二次没有使用 id 创建。

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

于 2013-06-27T22:46:40.127 回答