2011-04-25 4 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; 
} 

J'ai deux questionsQue fait lastIndexOf?

Qu'est-ce this.href.lastIndexOf("/")+1; et this.href.lastIndexOf("."); faire?

+1

Jetez un oeil à [ 'String.lastIndexOf'] (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/lastIndexOf) –

Répondre

2

lastIndexOf() trouve la dernière occurrence de votre chaîne dans la chaîne que vous recherchez.

La première lastIndexOf() trouve le dernier «/» dans l'attribut href du lien. Le second trouve la dernière occurrence de "." dans l'attribut href.

2

la fonction lastIndexOf est utilisée pour déterminer l'emplacement de la dernière occurrence d'un caractère (ou sous-chaîne) dans une chaîne.

Par exemple:

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

Donc, dans votre code, si vous avez un chemin "http://www.mywebsite.com/foo/bar.html", votre code, procédez comme suit:

//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); 

Ainsi, étant donné l'exemple de l'URL ci-dessus, thisMenuName contiendrait "barre".

HTH

+0

Thanx, Karl Nicoll itz incroyable. ....Merci beaucoup – user721487