suche nach einem # am anfang eines href-atributs
oleeeeee
- javascript
kann mir jemand sagen warum das folgende script nicht funktioniert?
<a id="link" href="#ankerlink">testlink</a>
<script type="text/javascript">
var istDasEtwaEinAnkerlink = document.getElementById("link").href.search(/^#/);
if(istDasEtwaEinAnkerlink != -1){
alert("habe den ankerlink gefunden");
}
</script>
mit ^ kann man ja am anfang einer zeichenkette suchen. funktioniert auch super, abgesehen in dieser situation.
n'abend,
mit ^ kann man ja am anfang einer zeichenkette suchen. funktioniert auch super, abgesehen in dieser situation.
da alert( "#foobar".search(/^#/) ); wie erwartet "0" ausgibt, gehe ich nicht davon aus, dass dein Problem am RegEx liegt. Hast du da vielleicht ein anderes Problem? Gibt es eine Fehlermeldung? Existiert das Element mit der angegebenen ID überhaupt?
weiterhin schönen abend...
»»Hast du da vielleicht ein anderes Problem? Gibt es eine Fehlermeldung? Existiert das Element mit der angegebenen ID überhaupt?
Möglich. Nein. Ja.
um das nochmal klar zu stellen:
dashier geht:
<a id="link" href="auserlesen">testlink</a>
<script type="text/javascript">
var istDasEtwaEinAnkerlink = document.getElementById("link").href.search(/aus/);
if(istDasEtwaEinAnkerlink != -1){
alert("habe den ankerlink gefunden");
}
</script>
sobalt ich bei search ein ^ für den anfang einer kette einfüge geht es nicht mehr:
<a id="link" href="auserlesen">testlink</a>
<script type="text/javascript">
var istDasEtwaEinAnkerlink = document.getElementById("link").href.search(/^aus/);
if(istDasEtwaEinAnkerlink != -1){
alert("habe den ankerlink gefunden");
}
</script>
Hi,
dashier geht:
<a id="link" href="auserlesen">testlink</a>
var istDasEtwaEinAnkerlink = document.getElementById("link").href.search(/aus/);
if(istDasEtwaEinAnkerlink != -1){
sobalt ich bei search ein ^ für den anfang einer kette einfüge geht es nicht mehr:
var istDasEtwaEinAnkerlink = document.getElementById("link").href.search(/^aus/);
Also bei mir liefert search, auf die Zeichenkette "auserlesen" angewandt, in beiden Faellen 0.
MfG ChrisB
Also bei mir liefert search, auf die Zeichenkette "auserlesen" angewandt, in beiden Faellen 0.
komisch. bei mir kommt es weder im Safari, noch im Firefox zum alert. bzw. nur im ersten beispiel
Die Funktion search ist offenbar im Clinch, ob sie nun eine index (Perl) Funktion oder ein Patternmatch sein soll.
Weil die Suchfunktion dir einen Positionswert zurückgeben will, darf sie positionale Vorgaben nicht akzeptieren. Sie lässt sich also nicht mt ^ oder $ festnageln.
Verwende eine eine andere Funktion, die echt in der Lage ist, mit Regulären Ausdrücken klar zu kommen.
Wir haben hier offenbar JavaScript Sprach-Schrott vorliegen.
mfg Beat
Verwende eine eine andere Funktion, die echt in der Lage ist, mit Regulären Ausdrücken klar zu kommen.
Wir haben hier offenbar JavaScript Sprach-Schrott vorliegen.
oder anders. hat jemand eine idee wie ich anhand eines hrefs einer variable herausfinden kann, ob es sich dabei um einen ankerlink innerhalb der seite handelt?
Hi,
oder anders. hat jemand eine idee wie ich anhand eines hrefs einer variable herausfinden kann, ob es sich dabei um einen ankerlink innerhalb der seite handelt?
https://forum.selfhtml.org/?t=171570&m=1123259
MfG ChrisB
Moin.
In den meisten Fällen sollte auch die einfachere Abfrage
link.hash && location.href.split('#',2)[0] == link.href.split('#',2)[0]
funktionieren...
Christoph
das problem
selbst wenn im href-attribut nur "#" steht scheint für das js auch noch zusätzlich der pfad der aktuellen datei drin zu stehen
somit kann ich einen seiteninternen ankerlink nicht von einem ankerlink von einer anderen seite unterscheiden :(
Hi,
selbst wenn im href-attribut nur "#" steht scheint für das js auch noch zusätzlich der pfad der aktuellen datei drin zu stehen
wenn Du die href-Eigenschaft ausliest, anstatt Dich auf das href-Attribut zu konzentrieren, dann ist das auch so definiert.
somit kann ich einen seiteninternen ankerlink nicht von einem ankerlink von einer anderen seite unterscheiden :(
Die absolute URL eines Links hat mit der absoluten URL des Dokuments signifikante Gemeinsamkeiten, sofern der Link auf einen Anker innerhalb jenes Dokuments zielt.
Cheatah
Moin.
[...] somit kann ich einen seiteninternen ankerlink nicht von einem ankerlink von einer anderen seite unterscheiden :(
Hast du meinen Vorschlag ausprobiert? Was passiert, wenn du das hier
<script type="text/javascript">
function test(link) {
alert(link.hash && location.href.split('#',2)[0] == link.href.split('#',2)[0]);
return false;
}
</script>
<a href="#test" onclick="return test(this)">interner Link</a>
<a href="http://example.org/#test" onclick="return test(this)">externer Link</a>
in eine leere Datei mit Endung .html kopierst, mit einem Browser öffnest und auf auf die Links klickst?
Christoph
Hast du meinen Vorschlag ausprobiert? Was passiert, wenn du das hier
tut mir leid, ich glaube ich habe ihn einfach nicht verstanden.
habe das problem jetzt mit hilfe von document.anchors gelößt :/
Moin.
Das geht aber nur gut, solange du nur Anker mit name-Attribut und keine IDs verwendest. Siehe z.B.
drei potentielle Link-Ziele:
<a name="test1">1</a>
<a id="test2">2</a>
<span id="test3">3</span>
<script>
onload = function() {
alert(document.anchors.length);
};
</script>
FF und Opera meinen, es gäbe nur einen Anker, IE findet 2...
Und mehr als https://forum.selfhtml.org/?t=171570&m=1123292 kann ich dir wirklich nicht mehr helfen...
Christoph
Hi,
selbst wenn im href-attribut nur "#" steht scheint für das js auch noch zusätzlich der pfad der aktuellen datei drin zu stehen
somit kann ich einen seiteninternen ankerlink nicht von einem ankerlink von einer anderen seite unterscheiden :(
doch - kannst Du.
Zunächst mal musst Du nocht mit Kanonen auf Spatzen schießen. Die einfache Stringfunktion indexOf() liefert Dir die Information, ob und wo das Zeichen überhaupt vorkommt.
Ist es an erster Stelle, dann ist die Sache klar. Wenn nicht, vergleiche den Teil davor mit Deinen eigenen Seiten oder - wenn es sich um die aktuelle handelt - wird's mit location.pathname viel einfacher.
freundliche Grüße
Ingo
Moin.
[...] oder - wenn es sich um die aktuelle handelt - wird's mit location.pathname viel einfacher.
Würde ich nicht empfehlen - das liefert falsche Treffer, wenn die Pfadnamen übereinstimmen, aber die Hostnamen sich unterscheiden!
Was hast du gegen die von mir bereits mehrfach gepostete Lösung einzuwenden?
Christoph
Hi,
[...] oder - wenn es sich um die aktuelle handelt - wird's mit location.pathname viel einfacher.
Würde ich nicht empfehlen - das liefert falsche Treffer, wenn die Pfadnamen übereinstimmen, aber die Hostnamen sich unterscheiden!
was nun wirklich äußerst selten vorkommen dürfte.
Was hast du gegen die von mir bereits mehrfach gepostete Lösung einzuwenden?
nichts. Ich hatte Deine Postings beim Schreiben noch gar nicht gesehen und auch noch nicht geprüft, was die Browser da bei seiteninternen Links zurückliefern.
freundliche Grüße
Ingo
Moin.
Würde ich nicht empfehlen - das liefert falsche Treffer, wenn die Pfadnamen übereinstimmen, aber die Hostnamen sich unterscheiden!
was nun wirklich äußerst selten vorkommen dürfte.
Nicht so selten, wie man glaubt - es müssen nur beide Dokumente im Wurzelverzeichnis liegen, und schon kann http://example.org/#test nicht mehr von http://example.com/#test unterschieden werden...
Was hast du gegen die von mir bereits mehrfach gepostete Lösung einzuwenden?
nichts. Ich hatte Deine Postings beim Schreiben noch gar nicht gesehen [...]
Da bin ich ja beruhigt ;)
Christoph
Moin.
kann mir jemand sagen warum das folgende script nicht funktioniert?
<a id="link" href="#ankerlink">testlink</a>
<script type="text/javascript">
var istDasEtwaEinAnkerlink = document.getElementById("link").href.search(/^#/);
if(istDasEtwaEinAnkerlink != -1){
alert("habe den ankerlink gefunden");
}
</script>
Gewöhne dir bitte an, Kontrollausgaben zu tätigen. Was enthält document.getElementById("link").href?
Christoph
PS: je nachdem, was du tun möchtest, könnte auch document.getElementById("link").hash hilfreich sein...
Hi,
kann mir jemand sagen warum das folgende script nicht funktioniert?
Weil das Abfragen von href vermutlich nicht das liefert, was du erwartest - schon mal mit einer Kontrollausgabe per alert getestet ...?
Siehe auch Mathias' Probleme mit Ankern und position:fixed - JavaScript-Kombinationslösung, etwas weiter unten unter "Funktionsweise des Scripts".
MfG ChrisB
Hi,
kann mir jemand sagen warum das folgende script nicht funktioniert?
weil Du laut Subject das href-Attribut suchst, aber statt dessen die href-Eigenschaft verwendest. Deine nächste Frage betrifft den IE - beschwer Dich diesbezüglich bitte in Redmond.
Cheatah