Parentelement für ein event?
Timur
- javascript
0 Steel0 Felix Riesterer
0 Timur
0 Struppi
Hallo,
ich will so was wie pseudo-online-übersetzung für einige Wörter machen. Aber ich finde nicht, wie man id des Parentelements, das ein event (in meinem Fall) verursacht hat, findet?! In IE klappt das einigermaßen. Nur mozilla streikt. Ich füge meinen Testcode für Mozilla ein, vielleicht kann mir da einer oder anderer weiterhelfen.
<script type="text/javascript">
function showTranslation(e)
{
if (!e) e = window.event;
alert(e.target.id);
var translationData = document.createTextNode("Das ist ein Test und nichts weiter");
var divTranslation = document.createElement("div");
var elter = document.getElementById("id1");
divTranslation.appendChild(translationData);
divTranslation.style.backgroundColor = "#EEE";//"#CCCCCC";
divTranslation.style.borderStyle = "dashed";
divTranslation.style.borderWidth = "1px";
divTranslation.style.position = "absolute";
divTranslation.style.margin = "2px";
divTranslation.style.padding = "3px";
elter.appendChild(divTranslation);
}
</script>
<table valign=middle align=center height="100%">
<tr><td>
<p><span onclick="showTranslation()" id="id1" style="cursor:help; border-bottom:1px dashed;">Test</span> Test weiter
<br>Und was passiert hier?Und was passiert hier?Und was passiert hier?</p>
</td></tr>
</table>
Natürlich, könnte man id des Elements, als Parameter übergeben, aber ich wollte das automatisch machen.
Tim(ur)
Hi! Du willst das Element mit der ID id1 ansprechen?
this. ist hier dein Freund. Oder du laesst gleich das onclick weg und bindest den Eventhandler per JS an das Element.
Hi! Du willst das Element mit der ID id1 ansprechen?
this. ist hier dein Freund. Oder du laesst gleich das onclick weg und bindest den Eventhandler per JS an das Element.
Es sollte mehrere Elemente geben mit id1, id2 usw. In dem Code, den ich hinzufügt habe, schreibe ich direkt id von element mit id1. Nun weiß ich nicht, wie diese ID automatisch rauskriegen kann.
Ich verstehe leider nicht ganz, was du mit "this" gemeint hast :( Kannst du bitte, vielleicht ein beispiel geben?
Thanx
this ist in JS immer das aufrufende Element.
<p onClick="alert(this.innerhtml)">Hallo,<br>ich bin es!</p>
ergibt "Hallo,<br>ich bin es!"
Struppi hats Dir aber ja in einem Beispiel praesentiert.
this ist in JS immer das aufrufende Element.
<p onClick="alert(this.innerhtml)">Hallo,<br>ich bin es!</p>
ergibt "Hallo,<br>ich bin es!"
Struppi hats Dir aber ja in einem Beispiel praesentiert.
Japp, mit Strupi's Beipiel habe ich verstanden was du gemeint hast.
Lieber Timur,
ich will so was wie pseudo-online-übersetzung für einige Wörter machen.
also in etwa wie wenn man auf dieser Seite im Inhalt ein Wort doppelklickt?
Liebe Grüße aus Ellwangen,
Felix Riesterer.
Lieber Timur,
ich will so was wie pseudo-online-übersetzung für einige Wörter machen.
also in etwa wie wenn man auf dieser Seite im Inhalt ein Wort doppelklickt?
Liebe Grüße aus Ellwangen,
Felix Riesterer.
Ja, so etwa :) Aber es hilft mir leider nicht weiter, habe versucht, den quellcode rauszufinden, ohne erfolg. So kompliziert muss bei mir nicht sein
Lieber Timur,
der Quellcode ist völlig simpel: translator.js
Wenn Du auch so ein InlinePopup haben möchtest, dann kannst Du dieses einfach auch in Deine Seite einbinden. Wenn translator.js das InlinePopup findet, benutzt es dieses, wenn nicht, dann eben nicht. Es ist also völlig optional.
Liebe Grüße aus Ellwangen,
Felix Riesterer.
Nachtrag
Ich habe das Script "translator.js" nocheinmal genauer angeschaut und festgestellt, dass es das InlinePopup-Script selbst nachladen kann. Dazu musst Du nur im "translator.js" die entsprechende Zeile finden, in der die URL steht... Aber wie gesagt, das ist völlig optional.
Liebe Grüße aus Ellwangen,
Felix Riesterer.
der Quellcode ist völlig simpel: translator.js
Vielen lieben Dank. Ich muss mir das ganze anschauen.
<p><span onclick="showTranslation()" id="id1" style="cursor:help; border-bottom:1px dashed;">Test</span> Test weiter
Du musst der Funktion, wenn du diese inline Aufrufst auch das event Objet übergeben und kannst gleich auch noch this übergeben, dann sparst du dir das holen von elter mit getElementById().
onclick="showTranslation(event, this)"
function showTranslation(e, elter)
{
if (!e) e = window.event;
...
Struppi.
Du musst der Funktion, wenn du diese inline Aufrufst auch das event Objet übergeben und kannst gleich auch noch this übergeben, dann sparst du dir das holen von elter mit getElementById().
Ok, mit "this" gefällt mir. Dann brauche ich kein event mehr. Und kann sogar alle id's weg lassen.
Nur die Frage, warum muss das event-objekt bei Mozilla übergeben und bei IE klappt es auch ohne Übergabe?!
Danke
Hallo,
Nur die Frage, warum muss das event-objekt bei Mozilla übergeben und bei IE klappt es auch ohne Übergabe?!
Weil es nunmal so ist. Weil die Browser sich in dem Punkt unterscheiden...
Mathias
Hallo,
onclick="showTranslation(event, this)"
function showTranslation(e, elter)
{
if (!e) e = window.event;
...
e ist in dem Fall bereits browserübergreifend das Event-Objekt, die Vereinheitlichung hat quasi schon stattgefunden durch die Übergabe von event.
Mathias
--
[SELFHTML aktuell Weblog](http://aktuell.de.selfhtml.org/weblog/)