lastIndexOf做什么?

时间:2011-04-25 14:28:26

标签: javascript menu

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;
}

我有两个问题

this.href.lastIndexOf("/")+1;this.href.lastIndexOf(".");做了什么?

2 个答案:

答案 0 :(得分:2)

lastIndexOf()在您要搜索的字符串中查找字符串的最后一次出现。

所以第一个lastIndexOf()找到链接的href属性中的最后一个“/”。第二个发现最后一次出现“。”在href属性中。

答案 1 :(得分: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); 

因此,根据上面的示例网址,thisMenuName将包含“bar”。

HTH