Oracle Apex中的Javascript;无法调用未定义的“”的方法子字符串;

Javascript in Oracle Apex, "Cannot call method substr of undefined"

本文关键字:方法 字符串 未定义 调用 中的 Apex Javascript Oracle      更新时间:2023-09-26

我正试图在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子句之后
有人能解释为什么会发生这种情况吗?

看起来link.attr('id')是未定义的。所以我想看看在你第一次点击后,这个链接是否还有ID属性。很可能,链接是重新创建的,但第二次创建时没有id。

不过,首先,在链接之后,打开DOM,看看链接是否仍然具有该属性。