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(".");
做了什么?
答案 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