Avatar billede nat Nybegynder
02. september 2004 - 11:55 Der er 14 kommentarer og
1 løsning

Noget replace i javascript

Hej

Jeg har følgende javascript fra nettet, og det giver et bread crumb trail:

_______________________________________________________________
<SCRIPT LANGUAGE="JavaScript">
                                    <!--
                                    var path = "";
    var href = document.location.href;
    var s = href.split("/");
    for (var i=2;i<(s.length-1);i++)
    {
    path+="<A HREF=\""+href.substring(0,href.indexOf("/"+s  [i])+s[i].length+1)+"/\">"+s[i]+"</A> / ";
    }
    i=s.length-1;
    path+="<A HREF=\""+href.substring(0,href.indexOf(s[i])+s[i].length)+"\">"+s[i]+"</A>";
    var url = window.location.protocol + "//" + path;
    document.writeln(url);
    //-->
    </script>
_______________________________________________________________

Kan man et eller andet sted i det her script lave noget replace?
Der kommer nemlig fx. http//: med som jeg gerne vil erstatte med ingen ting (altså luft), og jeg vil gerne omdømme det første "link" til fx Home.

Er det noget der kan lade sig gøre?
Avatar billede roenving Novice
02. september 2004 - 12:34 #1
Hvis du erstatter 0-et i ovenstående med 7, får du fjernet http:// ...

-- og hvis du i den første vil have Home, bliver det noget i retning af:

<script type="text/javascript">
<!--
  var path = "";
  var href = document.location.href;
  var s = href.split("/");
  var path="<A HREF=\""+href.substring(7,href.indexOf("/"+s[2])+s[2].length+1)+"/\">Home</A> / ";
  for (var i=3;i<(s.length-1);i++){
    path+="<A HREF=\""+href.substring(7,href.indexOf("/"+s  [i])+s[i].length+1)+"/\">"+s[i]+"</A> / ";
    }
    i=s.length-1;
    path+="<A HREF=\""+href.substring(7,href.indexOf(s[i])+s[i].length)+"\">"+s[i]+"</A>";
    var url = path;
    document.writeln(url);
    //-->
    </script>
Avatar billede nat Nybegynder
02. september 2004 - 12:56 #2
roenving: tak det fungerer - dog har jeg fx en sti der ser så'n her ud:

Her er du:  Home / site / Menu / Punkt1 / punkt1_sub / punkt1_sub_sub.htm

Her ønsker jeg faktsisk, at det er site der bliver omdøbt til Home (ellers fungerer linket heller ikke), da det der hedder Home nu, rent faktsisk bare er (på nuværende tidspunkt) localhost.

Ydermere vil jeg gerne kunne "slette" (replace) det punkt der hedder Menu i trailen -hvordan gør jeg det (da det heller ikke returnere nogen side)?
Avatar billede nat Nybegynder
02. september 2004 - 13:17 #3
Hov fik lige testet igen, og ved at skrive 7 istedet for nul gør det at linksne ikke virker - da den skriver noget ekstra bagpå stien....
Avatar billede nat Nybegynder
02. september 2004 - 13:18 #4
Så hvis jeg retter 7 til 0 igen uden at gøre andet ved scriptet, fungerer linksne :-)

Men jeg er stadigvæk interesseret i at kunne fjerne (replace) nogle af stierne fra trailen. Hvordan kan jeg det?
Avatar billede roenving Novice
02. september 2004 - 13:46 #5
>>13:17:05

Ja, links til internet-adresser skal have http:// for at virke, da de ellers peger på en udvidelse af den sti, du aktuelt har !-)

-- og man kan sagtens replace, udvide og fjerne noget, men jeg har ikke klart forstået, hvordan du bestemmer hvad, der skal ændres/fjernes ...
Avatar billede nat Nybegynder
02. september 2004 - 13:57 #6
>>roenving: Når jeg putter scriptet ind på mine sider, som det ser ud nu (disse sider bliver generet i c#.NET, og lagt på med MCMS), så kommer fx. følgende trail på en side:

Her er du: Home/site/Menu/Punkt1/punkt1_sub/punkt1_sub_sub.htm

Her giver det ingen mening at man skal kunne klikke på Menu, da det bare refererer til en mappe der hedder Menu (ligger i en sitemanager til MCMS) og som ikke har nogen side. Derfor vil jeg gerne fjerne det fra stien. (og jeg ved præceist at den hedder Menu, plus at jeg har to til der hedder Menu1 og Menu2 som også skal slettes fra stien).

Derudover vil jeg ikke have, at både Home og site refererer til min forside - og vil derfor gerne kunne fjerne fx. site fra stien.

Så hvordan kan fjerne dem med blankt? :-)
Avatar billede roenving Novice
02. september 2004 - 14:01 #7
<script type="text/javascript">
<!--
  var path = "";
  var href = document.location.href;
  var s = href.split("/");
  var path="<A HREF=\""+href.substring(0,href.indexOf("/"+s[2])+s[2].length+1)+"/\">Home</A> / ";
  for (var i=3;i<(s.length-1);i++){
    if(s[i].indexOf('Menu')!=0&&s[i]!='site')
      path+="<A HREF=\""+href.substring(0,href.indexOf("/"+s  [i])+s[i].length+1)+"/\">"+s[i]+"</A> / ";
  }
  i=s.length-1;
  path+="<A HREF=\""+href.substring(0,href.indexOf(s[i])+s[i].length)+"\">"+s[i]+"</A>";
  var url = path;
  document.writeln(url);
  //-->
</script>
Avatar billede nat Nybegynder
02. september 2004 - 14:27 #8
>>roenving: okay. vil det så sige at hvis jeg vil have fjernet dem der hedder menu1 og menu2 så kan jeg sætte det ind som en else if eller hvordan (kan nemlig ikke få det til at fungerer ud over det der er)

Eks.:
<script type="text/javascript">
<!--
  var path = "";
  var href = document.location.href;
  var s = href.split("/");
  var path="<A HREF=\""+href.substring(0,href.indexOf("/"+s[2])+s[2].length+1)+"/\">Home</A> / ";
  for (var i=3;i<(s.length-1);i++){
    if(s[i].indexOf('Menu')!=0&&s[i]!='site')
      path+="<A HREF=\""+href.substring(0,href.indexOf("/"+s  [i])+s[i].length+1)+"/\">"+s[i]+"</A> / ";
    else if(s[i].indexOf('Menu1')!=0&&s[i]!='site')
      path+="<A HREF=\""+href.substring(0,href.indexOf("/"+s  [i])+s[i].length+1)+"/\">"+s[i]+"</A> / ";
  }
  i=s.length-1;
  path+="<A HREF=\""+href.substring(0,href.indexOf(s[i])+s[i].length)+"\">"+s[i]+"</A>";
  var url = path;
  document.writeln(url);
  //-->
</script>
Avatar billede roenving Novice
02. september 2004 - 14:38 #9
Nu skrev du Menu med stort m, så det har jeg lavet den til !-)

Den finder nemlig alle delstrenge, som starter med 'Menu' og springer dem over !o]

-- og fordi de springes over kan du ikke benytte den taktik ...

-- har du prøvet 'bare' at bruge den, jeg lagde ?-)
Avatar billede nat Nybegynder
02. september 2004 - 14:43 #10
roenving: Arhhh, okay, havde ikke lige set at det rent faktsisk var det den gjorde :-)

Men det virker :-)

Men for argumentes skyld, kan jeg så tilføje en else if på samme måde som ovenfor bare med et anden begyndelse - lad os sige jeg ville fjerne alt der starter med side?
Avatar billede nat Nybegynder
02. september 2004 - 14:45 #11
roenving: smid også lige et svar :-) (opretter lige et nyt spørgsmål, da jeg har et spørgsmål mere til dette script)
Avatar billede roenving Novice
02. september 2004 - 16:57 #12
-- nej, da vi springer dem over, som opfylder betingelsen, vil det, at du sætter en else på, betyde, at alle vil blive udskrevet mindst een gang, dem som ikke har side eller menu vil blive udskrevet 2 gange !-)

Så det skal sættes sammen i den samme betingelse:

    if(s[i].indexOf('Menu')!=0&&s[i].indexOf('side')!=0&&s[i]!='site')
Avatar billede nat Nybegynder
01. oktober 2004 - 11:27 #13
roenving: Smider du ikke et svar
Avatar billede roenving Novice
01. oktober 2004 - 14:09 #14
Velbekomme '-)
Avatar billede roenving Novice
09. oktober 2004 - 22:36 #15
-- og tak for point ;~}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester