2013-06-27 79 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並查看該鏈接是否仍具有該屬性。

相關問題