2013-02-06 107 views
0

我使用DreamWeaver創建了一個網站,並且我使用了一個Spry小部件,它只是一個用於導航的邊欄,並且可以通過單擊它們來打開和關閉標籤。你可以打開多個標籤,這是我不太喜歡的。當打開一個新選項卡時,我希望它關閉打開的選項卡(因此您總是會打開一個選項卡)。 我從來沒有用JavaScript編寫程序,我看了一下js文件的代碼,並且修改它看起來並不難。在這裏,你就會明白:http://pastebin.com/eZAYE0kZ升級javascript功能。沒有經驗

我看到,當你打開一個標籤時所執行的功能是

Spry.Widget.CollapsiblePanel.prototype.onTabClick = function(e) 
{ 
     if (this.isOpen()) 
       this.close(); 
     else 
     { 
       this.open(); 
     } 


     this.focus(); 

     return this.stopPropagation(e); 
}; 

,所以我認爲正確修改這一條,我可以把它關閉一個是打開。 另外,我realyzed,有在底部的功能,它的目的是要關閉所有標籤頁(或面板),

Spry.Widget.CollapsiblePanelGroup.prototype.closeAllPanels = function() 
{ 
     var cpanels = this.getPanels(); 
     var numCPanels = cpanels.length; 
     for (var i = 0; i < numCPanels; i++) 
     { 
       var w = this.getElementWidget(cpanels[i]); 
       if (w && w.isOpen()) 
         w.close(); 
     } 
}; 

所以我想通過調用與前一個這個功能(假設我不」沒有一個標籤,所以它不會形成一個大的陷阱),我可以找到打開的標籤,並關閉它。所以我修改了第一個,因爲我顯示,

Spry.Widget.CollapsiblePanel.prototype.onTabClick = function(e) 
{ 
    if (this.isOpen()) 
     this.close(); 
    else 
    { 
     this.closeAllPanels(); 
     this.open(); 
    } 


    this.focus(); 

    return this.stopPropagation(e); 
}; 

但它甚至不打開標籤了。我不知道錯誤在哪裏,因爲我從來沒有用Javascript編碼過。

+0

爲您打開開發人員工具瀏覽器,看看您是否能在控制檯中看到錯誤。如果出現錯誤,請嘗試修復,否則請在onTabClick上設置一箇中斷點,看看有什麼問題。在Firefox中,你將需要在IE瀏覽器中使用Chrome開發者工具(Ctrl + Shift + c)的Firebug,我認爲他們稱之爲開發者工具,F12將它們從內存中提取出來。 –

回答

0

你的問題是,closeAllPanels()函數是CollapsiblePanelGroup類的一個方法,而不是CollapsiblePanel。當這個是一個CollapsiblePanel時,你試圖調用this.closeAllPanels()。

我不熟悉你使用的小部件,但我敢打賭你的小組會給你一些方法來訪問它所屬的小組。尋找名爲父母或類似的房產。然後你可以調用this.parent.closeAllPanels()

祝你好運!

0

嘗試刪除'this'。從之前的closeAllPanels();

我最近並沒有參與JavaScript,但我相信關於你的函數的關鍵字'this'指的是觸發事件的控件,也就是你點擊的標籤。

此選項卡沒有稱爲closeAllPanels()的函數,因爲它屬於頁面。這會導致Null引用錯誤,並且腳本的其餘部分不會運行。