Что делает lastIndexOf? - PullRequest
       1

Что делает lastIndexOf?

0 голосов
/ 25 апреля 2011
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 ]

2 голосов
/ 25 апреля 2011

функция 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".

НТН

2 голосов
/ 25 апреля 2011

lastIndexOf () находит последнее вхождение вашей строки в строке, которую вы ищете.

Таким образом, первый lastIndexOf () находит последний "/" в атрибуте href ссылки.Второй находит последнее вхождение "."в атрибуте href.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...