2011-04-25 39 views
0
window.onload = initAll; 

function initAll() { 
    var allLinks = document.getElementsByTagName("a"); 

    for (var i=0; i<allLinks.length; i++) { 
     if (allLinks[i].className.indexOf("menuLink") > -1) { 
      allLinks[i].onclick = toggleMenu; 
     } 
    } 
} 

function toggleMenu() { 
    var startMenu = this.href.lastIndexOf("/")+1; 
    var stopMenu = this.href.lastIndexOf("."); 
    var thisMenuName = this.href.substring(startMenu,stopMenu); 

    var thisMenu = document.getElementById(thisMenuName).style; 
    if (thisMenu.display == "block") { 
     thisMenu.display = "none"; 
    } 
    else { 
     thisMenu.display = "block"; 
    } 

    return false; 
} 

我有兩個問題lastIndexOf做什麼?

是什麼this.href.lastIndexOf("/")+1;this.href.lastIndexOf(".");怎麼辦?

+1

看一看['String.lastIndexOf'(https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/lastIndexOf) – 2011-04-25 14:34:20

回答

2

lastIndexOf()查找您搜索的字符串中最後一次出現的字符串。

因此,第一個lastIndexOf()查找鏈接的href屬性中的最後一個「/」。第二個發現最後一次出現「。」在href屬性中。

2

lastIndexOf函數用於確定字符串中字符(或子字符串)的最後一次出現的位置。

例如:

var helloWorldString = "Hello, World"; 
var firstOccurance = helloWorldString.indexOf('o'); // returns 4 
var lastOccurance = helloWorldString.lastIndexOf('o'); // returns 8 

因此,在你的代碼,如果你有一個路徑「http://www.mywebsite.com/foo/bar.html」,你的代碼將做到以下幾點:

//Find the last "/" character in the URL and adds one to the result. 
var startMenu = this.href.lastIndexOf("/") + 1; 

//Find the last "." character in the URL. 
var stopMenu = this.href.lastIndexOf("."); 

//get the file name from the URL 
var thisMenuName = this.href.substring(startMenu,stopMenu); 

因此,考慮到上面的示例URL,thisMenuName將包含「bar」。

HTH

+0

感謝名單,卡爾·尼科爾伊茨驚人。 ....非常感謝 – user721487 2011-04-25 16:42:12