2014-04-29 144 views
1

我有一個完整的選項卡系統使用下面的代碼。當您點擊A LI鏈接時,它會隱藏其他div並顯示選定的div。Javascript鏈接到標籤

<script type="text/javascript"> 
    //<![CDATA[ 

    var tabLinks = new Array(); 
    var contentDivs = new Array(); 

    function init() { 

     // Grab the tab links and content divs from the page 
     var tabListItems = document.getElementById('tabs').childNodes; 
     for (var i = 0; i < tabListItems.length; i++) { 
     if (tabListItems[i].nodeName == "LI") { 
      var tabLink = getFirstChildWithTagName(tabListItems[i], 'A'); 
      var id = getHash(tabLink.getAttribute('href')); 
      tabLinks[id] = tabLink; 
      contentDivs[id] = document.getElementById(id); 
     } 
     } 

     // Assign onclick events to the tab links, and 
     // highlight the first tab 
     var i = 0; 

     for (var id in tabLinks) { 
     tabLinks[id].onclick = showTab; 
     tabLinks[id].onfocus = function() { this.blur() }; 
     if (i == 0) tabLinks[id].className = 'selected'; 
     i++; 
     } 

     // Hide all content divs except the first 
     var i = 0; 

     for (var id in contentDivs) { 
     if (i != 0) contentDivs[id].className = 'tabContent hide'; 
     i++; 
     } 
    } 

    function showTab() { 
     var selectedId = getHash(this.getAttribute('href')); 

     // Highlight the selected tab, and dim all others. 
     // Also show the selected content div, and hide all others. 
     for (var id in contentDivs) { 
     if (id == selectedId) { 
      tabLinks[id].className = 'selected'; 
      contentDivs[id].className = 'tabContent'; 
     } else { 
      tabLinks[id].className = ''; 
      contentDivs[id].className = 'tabContent hide'; 
     } 
     } 

     // Stop the browser following the link 
     return false; 
    } 

    function getFirstChildWithTagName(element, tagName) { 
     for (var i = 0; i < element.childNodes.length; i++) { 
     if (element.childNodes[i].nodeName == tagName) return element.childNodes[i]; 
     } 
    } 

    function getHash(url) { 
     var hashPos = url.lastIndexOf ('#'); 
     return url.substring(hashPos + 1); 
    } 

    //]]> 
    </script> 

我希望能夠通過此鏈接打開標籤。因此,當我訪問index.php#hello時,它將鏈接到ID爲hello的div。我試着簡單地訪問鏈接,但這並沒有工作......感謝先進。

+0

爲了不使用'getHash()'函數,爲什麼不使用'window.location.hash'?另外,你應該在頁面加載時調用'showTab()'。你似乎沒有在頁面加載後執行它,只有當你點擊一個標籤。 –

回答

1

假設你在頁面加載運行init(),只需添加下面該函數內部:

if(window.location.hash) 
    showTab(); 

你當你點擊鏈接來設置適當的標籤中打開showTab()執行的功能,而不是在頁面加載,所以它不知道執行你的代碼。讓它運行一次,如果存在散列位置將有助於獲得您所需的內容。

+0

初始化的地方。我從身體的一個onLoad中獲得了刺激。 – PHP9274745382389

+0

沒關係,它只是需要運行。 –