gelöst LastIndexOf is not a function
Ich bin dabei mit javascript den Dateinamen zu filtern vom rest einer URL. Der Code sieht bis jetzt wie folgt aus:
"page" ist mit der URL definiert. Wenn die URL z.B. "
http://localhost/test/datei.html" ist will ich daraus nur "datei.html" haben. Wenn ich das Script so ausführe zeigt mir FireFox. "LastIndexOf is not a function". Was mache ich falsch?
01.
var firstpos = page.lastindexof('/');
02.
var lastpos = page.length();
03.
var page = page.split(firstpos + 1, lastpos);
10 Antworten
- LÖSUNG bastla schreibt am 22.05.2007 um 20:55:06 Uhr
- LÖSUNG EvilMoe schreibt am 22.05.2007 um 20:59:58 Uhr
- LÖSUNG Guenni schreibt am 22.05.2007 um 21:12:37 Uhr
- LÖSUNG EvilMoe schreibt am 22.05.2007 um 21:32:51 Uhr
- LÖSUNG EvilMoe schreibt am 22.05.2007 um 21:58:12 Uhr
- LÖSUNG filippg schreibt am 22.05.2007 um 21:59:05 Uhr
- LÖSUNG EvilMoe schreibt am 22.05.2007 um 22:07:01 Uhr
- LÖSUNG filippg schreibt am 23.05.2007 um 02:33:51 Uhr
- LÖSUNG EvilMoe schreibt am 22.05.2007 um 22:07:01 Uhr
- LÖSUNG Guenni schreibt am 22.05.2007 um 22:08:57 Uhr
- LÖSUNG EvilMoe schreibt am 22.05.2007 um 22:17:21 Uhr
- LÖSUNG EvilMoe schreibt am 22.05.2007 um 21:32:51 Uhr
LÖSUNG 22.05.2007 um 20:55 Uhr
Hallo EvilMoe!
Und wenn Du das so versuchst:
Zum Fehler bei "LastIndexOf" habe ich leider keine Idee ...
Grüße
bastla
Und wenn Du das so versuchst:
01.
var fpath = page.split('/');
02.
var fname = fpath[fpath.length - 1];
Grüße
bastla
LÖSUNG 22.05.2007 um 20:59 Uhr
Ich weiss nicht was los ist aber bei split kommt der selbe fehler. "page.split is not a function".... was ist denn hier bei mir los. Das kann doch nicht sein das die Funktionen bei mir fehlen.
LÖSUNG 22.05.2007 um 21:12 Uhr
@EvilMoe
Hi,
lastindexof wird lastIndexOf geschrieben. Bei Java-Script
ist Groß-Kleinschreibung zu beachten!!
In der Funktion split(var string) wird ein Trennzeichen angegeben.
Die Funktion zerlegt einen übergebenen String dann anhand dieses
Trennzeichens in einzelne Teile und gibt ein Array zurück.
Du aber hast Zahlen übergeben.
Um einen Teilstring zu extrahieren gibt es die Funktion substr(pos_ab_wo).
Möglich sind aber beide, eine Version mit substr(), eine mit split():
Grüße
Günni
Hi,
lastindexof wird lastIndexOf geschrieben. Bei Java-Script
ist Groß-Kleinschreibung zu beachten!!
In der Funktion split(var string) wird ein Trennzeichen angegeben.
Die Funktion zerlegt einen übergebenen String dann anhand dieses
Trennzeichens in einzelne Teile und gibt ein Array zurück.
Du aber hast Zahlen übergeben.
Um einen Teilstring zu extrahieren gibt es die Funktion substr(pos_ab_wo).
Möglich sind aber beide, eine Version mit substr(), eine mit split():
01.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
02.
03.
<html>
04.
<head>
05.
<title>Untitled</title>
06.
<script type="text/javascript">
07.
<!--
08.
function extract_datei1(){
09.
var url="http://localhost/ordner/ordner/datei1.html";
10.
var pos=url.lastIndexOf("/")+1;
11.
var dateiname1=url.substr(pos);
12.
alert("Version 1 mit substr: " + dateiname1);
13.
}
14.
function extract_datei2(){
15.
var url="http://localhost/ordner/ordner/datei2.html";
16.
var elemente=url.split("/");
17.
var dateiname2=elemente[elemente.length-1];
18.
alert("Version 2 mit split: " + dateiname2);
19.
}
20.
extract_datei1();
21.
extract_datei2();
22.
// -->
23.
</script>
24.
25.
</head>
26.
<body>
27.
28.
29.
</script>
30.
</body>
31.
</html>
Günni
LÖSUNG 22.05.2007 um 21:32 Uhr
Deine Funktionen gehen auch soweit... aber wenn ich eine Funktion so umbaue das die URL als Parameter übergeben wird gehts auch noch. ABER wenn ich jetzt die Funktion aus einer anderen aufrufen will kommt wieder der fehler "lastIndexOf is not a function".
Bsp.
geht:
geht nicht:
Bsp.
geht:
01.
02.
function extract_datei(url){
03.
var url=url;
04.
var pos=url.lastIndexOf("/")+1;
05.
var dateiname1=url.substr(pos);
06.
alert("Version 1 mit substr: " + dateiname1);
07.
}
08.
09.
10.
11.
extract_datei("http://localhost/ordner/ordner/datei1.html");
12.
13.
14.
01.
function extract_datei(url){
02.
var url=url;
03.
var pos=url.lastIndexOf("/")+1;
04.
var dateiname1=url.substr(pos);
05.
alert("Version 1 mit substr: " + dateiname1);
06.
}
07.
08.
09.
10.
function spLoadPage(url)
11.
{
12.
var page = extract_datei(url);
13.
14.
}
LÖSUNG 22.05.2007 um 21:58 Uhr
Ich habs mal online gestellt vielleicht hilft das weiter:
http://sven.evilmoe.com
http://sven.evilmoe.com
LÖSUNG 22.05.2007 um 21:59 Uhr
Also da würde ich schätzen, dass durch die Zuweisung
var page = extract_datei(url);
erwartet wird, dass die Funktion extract_datei(...) ein Wert zurückgeliefert wird. Allerdings sehe ich in dem Funktionsrumpf nirgends eine return-Anweisung. Was das nun mit lastIndexOf zu tun haben soll ist mir auch unklar.
Filipp
btw: lastIndexOf ist nur für Strings definiert. Kann es sein, dass du "url" eine Zahl zugewiesen hast?
var page = extract_datei(url);
erwartet wird, dass die Funktion extract_datei(...) ein Wert zurückgeliefert wird. Allerdings sehe ich in dem Funktionsrumpf nirgends eine return-Anweisung. Was das nun mit lastIndexOf zu tun haben soll ist mir auch unklar.
Filipp
btw: lastIndexOf ist nur für Strings definiert. Kann es sein, dass du "url" eine Zahl zugewiesen hast?
LÖSUNG 22.05.2007 um 22:07 Uhr
Ja vergisst mal das Beispiel oben hab das nur schnell als Beispiel zusammengebaut. Schaut ich die Wesbite an die ich vorhin gepostet habe das ist mein aktueller standt. Nein ich habe sicher keine Zahl zugewiesen. Wenn ich ein alert vor "var pos=url.lastIndexOf('/')+1;" setzt wird mir noch die URL angezeigt und ist 100%ig keine Zahl. Aber trotzdem immer "... is not a function..."
LÖSUNG 22.05.2007 um 22:08 Uhr
@EvilMoe
Hi,
wenn du Funktionen verschachtelst, heißt, eine Funktion verarbeitet das
Ergebnis einer anderen Funktion, so muß diese andere Funktion auch einen
Wert zurückgeben. Das wird mit dem Schlüsselwort return gemacht.
Heißt z.B.:
Heißt, auf dein Beispiel übertragen:
Grüße
Günni
Hi,
wenn du Funktionen verschachtelst, heißt, eine Funktion verarbeitet das
Ergebnis einer anderen Funktion, so muß diese andere Funktion auch einen
Wert zurückgeben. Das wird mit dem Schlüsselwort return gemacht.
Heißt z.B.:
01.
funktion quadrat(parameter){
02.
return parameter*parameter;
03.
}
04.
05.
var d=quadrat(4);
01.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
02.
03.
<html>
04.
<head>
05.
<title>Untitled</title>
06.
<script type="text/javascript">
07.
<!--
08.
function extract_datei1(url){
09.
var pos=url.lastIndexOf("/")+1;
10.
var dateiname1=url.substr(pos);
11.
return dateiname1;
12.
}
13.
14.
function zeige_dateiname_der_url(url){
15.
alert(extract_datei1(url));
16.
}
17.
zeige_dateiname_der_url("http://localhost/ordner/ordner/ordner/datei.html");
18.
// -->
19.
</script>
20.
21.
</head>
22.
<body>
23.
24.
25.
</script>
26.
</body>
27.
</html>
Günni
LÖSUNG 22.05.2007 um 22:17 Uhr
es sieht jetzt so aus:
Es kommt trotzdem der fehler....
Wie siehts bei euch aus kommt da kein Fehler? Kommt de nur bei mir? Auf die Wesbsite bezogen...
EDIT:
Ok problem gelöst! Ich hab bei meinen Links bei onclick stehen als Parameter für spLoadPage "this" muss aber "this.href" heissen...
01.
02.
function spLoadPage(url)
03.
{
04.
var pos=url.lastIndexOf("/")+1;
05.
var page=url.substr(pos);
06.
07.
request = createRequest();
08.
request.onreadystatechange = complete;
09.
request.open('GET', 'ajax_'+page, true);
10.
request.send(null);
11.
return false;
12.
}
13.
Wie siehts bei euch aus kommt da kein Fehler? Kommt de nur bei mir? Auf die Wesbsite bezogen...
EDIT:
Ok problem gelöst! Ich hab bei meinen Links bei onclick stehen als Parameter für spLoadPage "this" muss aber "this.href" heissen...
LÖSUNG 23.05.2007 um 02:33 Uhr
Ja vergisst mal das Beispiel oben hab das nur
schnell als Beispiel zusammengebaut.
Du Keks. Und das "Scherz" spare ich mir mal ganz bewusst. Wer geholfen haben will, der sollte wenigstens in der Lage sein, seine Frage vernünftig zu formulieren, und auch anständige Beispiele zu produzieren.schnell als Beispiel zusammengebaut.
Filipp
Ähnliche Inhalte
Neue Wissensbeiträge
Heiß diskutierte Inhalte