Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [JS] Parent-Tag finden (https://www.delphipraxis.net/38019-%5Bjavascript%5D-parent-tag-finden.html)

alcaeus 13. Jan 2005 16:27


[JS] Parent-Tag finden
 
Hallo allerseits.

In einem Event hole ich mir so das Tag das das Event aufgerufen hat:

Code:
thisTag = event.srcElement;
Kann ich nun irgendwie herausfinden, welches Tag der Parent ist, d.h. "span" oder "td" usw.?

Thanx and Greetz
alcaeus

MathiasSimmack 13. Jan 2005 16:29

Re: [JS] Parent-Tag finden
 
Gab´s nicht so was wie "tagName" oder nur "name"?

alcaeus 13. Jan 2005 16:34

Re: [JS] Parent-Tag finden
 
Hallo Mathias,

ja, allerdings erhalte ich z.B. mit
Code:
thisTag.tagName
den Namen des aktuellen Tags, und nicht jener des Tags das ihn umgibt.

Vielleicht nochmal eine bessere Erklärung.
Ich habe ein globales onMouseOver-Event. In diesem prüfe ich zuerst, ob tagName "a" ist, ich mich also über einem Link befinde. Nun will ich aber noch festlegen, dass wenn der Parent des Links einer bestimmten Klasse ist, dann nichts passiert, also wie z.B.
Code:
thisTag.parent.<eineMethode>
Allerdings hat das mit Parent bei mir nicht funktioniert.

Greetz
alcaeus

MathiasSimmack 13. Jan 2005 16:36

Re: [JS] Parent-Tag finden
 
Sprechen wir hier eigentlich von DOM? Oder versuchst du es mit "normalem" JavaScript? Im Fall von DOM müsste ich zwar erst nachgucken (ich habe schon ´ne Weile nix mehr mit JS gemacht), aber mir ist als könnte man da relativ bequem die Parents und Children von Objekten ermitteln. :gruebel:

alcaeus 13. Jan 2005 16:45

Re: [JS] Parent-Tag finden
 
Hallo Mathias,

ich kenne jetzt nicht den genauen Unterschied zw. DOM und JS (:oops:), aber wenn ich mich richtig erinnere, dann ist DOM von M$, und daher wohl IE-spezifisch. Da ich allerdings gerne eine möglichst allgemeingültige Lösung hätte, muss ich wohl erstmal JS sagen.

Greetz
alcaeus

MathiasSimmack 13. Jan 2005 16:46

Re: [JS] Parent-Tag finden
 
Äh, DOM (Document Object Model) ist eigentlich sehr allgemein. Es halten sich nur nicht unbedingt die Browser dran. :) Okay, bei meinen bisherigen Projekten haben Mozilla und IE6 keine Probleme gemacht. Opera habe ich nicht mehr im Test.

MathiasSimmack 13. Jan 2005 17:02

Re: [JS] Parent-Tag finden
 
Gerade getestet in IE6 und Mozilla 1.7.x
Code:
<html>
<head>
<title>DOM-Test</title>
<style type="text/css"><!--

i.TestKlasse {
   text-decoration:underline;
   background-color:transparent;
   color:red;
}

--></style>
</head>
<body>


Hallo, <b id="fett">[i]Welt[/i][/b]!</p>
<script type="text/javascript"><!--

   // [b] anhand der ID finden
   var b = document.getElementById("fett");

   // Parent von [b] ermitteln und Typnamen anzeigen
   var p = b.parentNode;
   alert(p.nodeName);

   // erstes "Kind" von [b] ermitteln, ...
   var i = b.firstChild;
   // ... & Typnamen anzeigen, ...
   alert(i.nodeName);

   // ... & Klasse ändern
   var ClassName = (navigator.userAgent.indexOf("MSIE") == -1)?"class":"className";
   i.setAttribute(ClassName,"TestKlasse");

--></script>
</body>
</html>
Opera? Keine Ahnung ... :)

alcaeus 13. Jan 2005 17:05

Re: [JS] Parent-Tag finden
 
Hallo Mathias,

erstmal danke, ich werde das mit parentNode auf der Heimfahrt testen :coder:
Noch eine Frage zu dem hier:
Code:
var ClassName = (navigator.userAgent.indexOf("MSIE") == -1)?"class":"className";
Heißt das, dass ich immer zwischen IE und nicht-IE unterscheiden muss um die Klasse rauszufinden?

Greetz
alcaeus

MathiasSimmack 13. Jan 2005 17:12

Re: [JS] Parent-Tag finden
 
Im Normalfall musst du bei DOM eben nicht mehr unterscheiden. Das ist ja der Vorteil. Wenn sich die Browser daran halten, dann kannst du Skripte schreiben, die in IE und Mozilla funktionieren. Und sicher auch im Opera.

Es gibt ein paar kleine Unterschiede. Leider. Und einer davon ist die Klasse. Da würde ich dir mal die Lektüre vom W3C ans Herz legen. Aber auch ins PSDK solltest du wg. evtl. Unterschieden gucken. :)

alcaeus 13. Jan 2005 17:13

Re: [JS] Parent-Tag finden
 
Ok, danke, dann werd ich das heute abend zu Hause auch auf Opera testen.

Thanx and Greetz
alcaeus

alcaeus 13. Jan 2005 20:21

Re: [JS] Parent-Tag finden
 
Hallo Mathias,

ich habe jetzt deinen Code getestet, und habe folgendes festgestellt:
  1. Opera akzeptiert weder class noch className, oder es ignoriert einfach mein Fade-Script ;)
  2. Dieser Code:
    Code:
    thisClassName = (navigator.userAgent.indexOf("MSIE") == -1) ? srcElement.class : srcElement.className;
    funktioniert im IE nicht, dieser:
    Code:
    thisClassName = srcElement.className
    aber schon.
  3. IE kommt auch mit diesem Code
    Code:
    parentClassName = srcElement.parentNode.className;
    klar. Bei Opera konnte ich dies nicht nachvollziehen, ich werde dies am Wochenende nachholen.

Nochmals Danke fuer deine Hilfe.

Greetz
alcaeus

MathiasSimmack 13. Jan 2005 20:43

Re: [JS] Parent-Tag finden
 
Wenn du die Klasse herausfinden willst, musst du bei DOM "getAttribute" benutzen. Als Beispiel: Ich habe ein Skript, dass in meinem HTML-Code alle <pre>-Abschnitte sucht und ggf. einen kleinen Text davor setzt. So wie das Wörtchen "Quellcode" vor dem [delphi]-Abschnitt hier im Forum.

Befindet sich vor dem <pre> aber bereits ein Absatz

der Klasse "Mini", dann soll natürlich kein weiterer ergänzt werden. Und dazu muss ich ja auch die Klasse des

-Absatzes abfragen:
Code:
if(!prevItem ||
  prevItem.nodeName != "P" ||
  prevItem.getAttribute(szClassName)!="Mini") { ... }
Wie gehabt: Abhängig vom Browser ist "szClassName" entweder class oder className.

Ich habe doch gesagt, schau beim W3C und ins PSDK wie das mit DOM funktioniert. :)

alcaeus 13. Jan 2005 21:00

Re: [JS] Parent-Tag finden
 
Zitat:

Zitat von MathiasSimmack
Ich habe doch gesagt, schau beim W3C und ins PSDK wie das mit DOM funktioniert. :)

Das muss wohl irgendwo zwischen Arbeitsplatz, Stempeluhr, Bushaltestelle und Schreibtisch zu hause aus meinem Kopf verschwunden sein :oops:
Ich lass das jetzt aber einfach so, das mit szClassName hat auch nicht funktioniert, jedenfalls beim IE nicht :roll:
Also wird das Ganze vorerst nur fuer IE gemacht, und basta.

Greetz
alcaeus

MathiasSimmack 13. Jan 2005 21:07

Re: [JS] Parent-Tag finden
 
Äh, du hast hoffentlich daran gedacht:
Zitat:

Zitat von MathiasSimmack
Code:
var ClassName = (navigator.userAgent.indexOf("MSIE") == -1)?"class":"className";

Beim alten Skript ist halt bloß das "sz" vor den Variablennamen gerutscht. :) Ansonsten häng doch mal dein Skript ran, oder schick´s mir per PN. Ich kann ja auch mal gucken. Außerdem bin ich neugierig. ;)

alcaeus 13. Jan 2005 21:11

Re: [JS] Parent-Tag finden
 
Zitat:

Zitat von MathiasSimmack
Äh, du hast hoffentlich daran gedacht:
Zitat:

Zitat von MathiasSimmack
Code:
var ClassName = (navigator.userAgent.indexOf("MSIE") == -1)?"class":"className";

Beim alten Skript ist halt bloß das "sz" vor den Variablennamen gerutscht. :) Ansonsten häng doch mal dein Skript ran, oder schick´s mir per PN. Ich kann ja auch mal gucken. Außerdem bin ich neugierig. ;)

:wall: Ich arbeite anscheinend zu viel.
Im IE funktionierts jetzt, Opera teste ich erst spaeter wieder...
Danke nochmals. Sobald das Script funktioniert, gibts ne PN ;)

Greetz
alcaeus


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:39 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz