JS: in text dynamisch schreiben & PopUp
Hallo:
1.
Ich hab mal mit document.write versucht, in die Seite zu schreiben, ohne ne neue Seite zu laden, hat aber nicht geklappt. Wie kann ich in die Seite was schreiben, ohen ne neu zu laden? Und vor allem: Wie kann ich bestimmen, WO das hinkommt?
2.
Diese kleinen PopUps beim Maus-überfahren, wie krieg ich die hin?
mfg
TByte
Antwort schreiben
Antwort 2 von TByte vom 24.05.2020, 22:14 Options
Danke
1. ist etwas kompliziert, kann mir dasjemand erklärn? Also ich hab verstanden dass man das mit Span regeln muss.
2. Dasselbe wie oben
mfg
TByte
Antwort 3 von Dr.Ma-Busen vom 24.05.2020, 23:07 Options
Vielleicht ist das hier ja verständlicher:
http://de.wikipedia.org/wiki/Document_Object_ModelMeintest du so ein popup? Oder etwas anderes?
<html>
<body>
<script type="text/javascript">
function show(e){
if(!e){ e = window.event;}
var o = document.getElementById("pop");
o.style.top = e.clientY+2;
o.style.left = e.clientX+2;
o.style.visibility = "visible";
}
function hide(){
document.getElementById("pop").style.visibility = "hidden";
}
</script>
<div id="pop" style="position:absolute;background-color:white; visibility:hidden;border:2px solid black">
PopUp
</div>
Text Bla blubbber<br>Text Bla blubbber<br>Text Bla blubbber<br>
Text Bla <a href="#" onmouseover="show()" onmouseout="hide()">blubbber</a><br>
Text Bla blubbber<br>Text Bla blubbber<br>Text Bla blubbber<br>
</body>
</html>
Antwort 4 von TByte vom 24.05.2020, 23:31 Options
1. Nee, also verstanden hab ichs noch nicht.
2.Also haste vllt. sowas [ i ] geschireben?
mfg
TByte
Antwort 5 von Dr.Ma-Busen vom 24.05.2020, 23:39 Options
1) Du weist ja jetzt das das ganze DOM bzw. Document Object Modell heißt. Dann nimm die Suchmaschiene deines vertrauens.. villeicht findest du ja eine Seite auf der es, für dich, verständlich beschrieben ist
2) nein ich habe kein [ i ] benutzt
Zitat:
beachte doch mal bitte die Beitragsformatierung
nööö..... vielleicht das nächtes mal :)
Antwort 6 von TByte vom 24.05.2020, 23:48 Options
1. ich werds versuchn
2. klappt aba nicht
mfg
TByte
Antwort 7 von Dr.Ma-Busen vom 25.05.2020, 00:38 Options
aso...
ändere mal onmouseover="show()" onmouseout="hide()" in
onmouseover="show(event)" onmouseout="hide(event)"
Vergessen das event mit zu übergeben... Opera und Konqueror meckern da nicht rum wenn es fehlt.
Antwort 8 von katy vom 25.05.2020, 11:53 Options
Hallo TByte,
zu deinem PopUp-Problem hast du ja schon Infos, ansonsten findest du unter den Stichworten "infofenster javascript" genug Vorlagen.
Das andere Problem:
Wenn du in eine fertig geladene Seite mit Document.write zu schreiben versuchst verlässt der Browser die Seite und zeigt nur noch das an, was du per write geschrieben hast. In (richtigem) XHTML funktioniert write auch nicht mehr.
Du wurdest schon aufs DOM hingewiesen und die Methoden des node-Obkjekts.
Für Anfänger gibt es noch die etwas einfachere Microsoft-Methode
innerHTML, die trotzdem von allen Browsern unterstützt wird, von JavaScript-Profis aber nicht gern gesehen wird.
Beispiel:
Im JavaScript-Bereich:
function schreibe(was,wo) {
document.getElementById(wo).innerHTML=was;
}
im body:
<div id="hier">alter Text, zum Ändern <span onclick="schreibe('hier','neuer <em>Text</em>')">hier klicken</span></div>
katy
Antwort 9 von katy vom 25.05.2020, 12:03 Options
sorry, kleiner Fehler: die Reihenfolge der Argumente der Funktion schreibe() ist vertauscht.
Antwort 10 von TByte vom 25.05.2020, 15:43 Options
Hallo,
also danke erstmal an beide.
Also innerhtml nimmt den ganzen Text weg und schreibt was neues hin. Ich dachte mehr daran, das so zu lassen und Text anzuhängen, bzw. mitten zwischen Sätzen. Das muss man ja mit DOM machen. Aber ich hab nur so viel verstanden: Mit Span oder Div irgendwas mit getelementbytagid, aberwie genau kapier ich noch nicht.
mfg
TByte
Antwort 11 von katy vom 25.05.2020, 17:35 Options
Hallo TByte,
wenn du nur was
anhängen willst hast du die einfache Möglichkeit des += mit innerHTML:
function anhaengen(was,wo) {
document.getElementById(wo).innerHTML+=was;
}
Oder du liest mit
var alterInhalt = document.getElementById(wo).innerHTML;
den bisherigen Inhalt aus, arbeitest ein bisschen mittels Stringmanipulation daran
var neuerInhalt = ...
und schreibst den neuen String zurück
document.getElementById(wo).innerHTML = neuerInhalt;
Natürlich funktioniert das alles, sowohl DOM-Methoden als auch innerHTML, mit anderen Elementen als span und div! Das wäre ja furchtbar, wenn man/frau dazu auf diese Krücken angewiesen wäre.
Übrigens kannst du zu all diesen Stichworten bei SelfHTML nachlesen!
katy
Antwort 12 von TByte vom 25.05.2020, 18:37 Options
Ok, danke.
Und wie klappt jetzt nochmal die DOM-methode?
Antwort 13 von TByte vom 25.05.2020, 18:52 Options
sorry, noch ne frage:
gibs sowas wie GetElementByTagClass?
mfg
TByte
Antwort 14 von katy vom 25.05.2020, 19:45 Options
Hallo TByte,
die DOM-Methode ergibt sich aus den Objekten
document und
node in JavaScript. Lies dazu bei
SelfHTML nach, da gibts auch genug Beispiele.
Alle
getElement(s)ByIrgendwas-Methoden findest du zB. beim document-Objekt.
katy
Antwort 15 von TByte vom 26.05.2020, 21:08 Options
Hallo danke.
Also,
ich möchte ein Element verstecken, oder besser überschreiben, deshalb der ganze Aufwand. Jetzt hab ich aber eine Seite, die ich nicht ändern kann. Da gibs ein Element, dass ich verstekcen will, was aber nur einer Klasse angehört. Wie bewerkstellige ich das?
mfg
TByte
Antwort 16 von TByte vom 27.05.2020, 18:42 Options
Also Getelementbyclass gibs nicht. Kann ich das irgendwie umschreiben?
mfg
TByte
Antwort 17 von katy vom 27.05.2020, 19:08 Options
Hallo TByte,
bitte erkläre genauer, was du tun willst. Um störende Klassen in Fremdseiten im eigenen Browser unsichtbar zu machen gibt's User-Stylesheets.
katy
Antwort 18 von TByte vom 27.05.2020, 19:09 Options
Ich wollt n Greasemonkey-Script schreiben, welches eine (lästige) Tabellenzeile ausblendet. Diese hat aber nur Klasse, keine ID!
mfg
TByte
Antwort 19 von katy vom 27.05.2020, 19:26 Options
wenn es sich wirklich nur um deinen eigenen Browser handelt ist ein User-Style mit dem Inhalt
.die_Klasse_um_die_es_sich_dreht {
display:none;
}
ausreichend.
Es gibt übrigens durchaus JavaScript-Librarys, die ein
getElementsByClassName liefern, du musst nur danach googlen.
katy
Antwort 20 von TByte vom 27.05.2020, 19:52 Options
Also ich hab nur nach GetElementByClass gegooglet.
Wird die Library denn auch von allen Browsern unterstützt, die Greasemonkey haben?
mfg
TByte