Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

JS: in text dynamisch schreiben & PopUp





Frage

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 1 von Dr.Ma-Busen

Moin!

1) Über das Document Object Model kannst du soetwas machen:
http://de.selfhtml.org/dhtml/modelle/dom.htm

2) Mit ein versteckten div (CSS visibility).
Ermittelst die Mausposition und verschiebst das div an die passende stelle und blendest es ein.

Antwort 2 von TByte

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

Vielleicht ist das hier ja verständlicher:
http://de.wikipedia.org/wiki/Document_Object_Model

Meintest 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

1. Nee, also verstanden hab ichs noch nicht.
2.Also haste vllt. sowas [ i ] geschireben?
mfg
TByte

Antwort 5 von Dr.Ma-Busen

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

1. ich werds versuchn
2. klappt aba nicht
mfg
TByte

Antwort 7 von Dr.Ma-Busen

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

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

sorry, kleiner Fehler: die Reihenfolge der Argumente der Funktion schreibe() ist vertauscht.

Antwort 10 von TByte

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

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

Ok, danke.
Und wie klappt jetzt nochmal die DOM-methode?

Antwort 13 von TByte

sorry, noch ne frage:
gibs sowas wie GetElementByTagClass?
mfg
TByte

Antwort 14 von katy

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

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

Also Getelementbyclass gibs nicht. Kann ich das irgendwie umschreiben?
mfg
TByte

Antwort 17 von katy

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

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

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

Also ich hab nur nach GetElementByClass gegooglet.
Wird die Library denn auch von allen Browsern unterstützt, die Greasemonkey haben?
mfg
TByte

Antwort 21 von katy

solche "Librarys" sind nichts weiter als eine Sammlung von Funktionen, so als ob du selbst (das Wissen vorausgesetzt) dir das schreiben würdest. Ich weiß nicht was du ergoogelt hast (es gibt einen ganzen Haufen solche Librarys mit get...Class...), wenn das Erstellungsdatum zu weit her ist nimm was anderes.

Antwort 22 von TByte

Hi
also:
document.write="<p align="center">"
geht ja wohl kaum
document.write="<p align='center'>"
wird nicht akzeptiert. Was denn wie denn?
mfg
TByte

Antwort 23 von Supermax

document.write()
ist eine FUNKTION, um etwas in dein HTML-Dokument zu schreiben, schreibst du also
document.write("<p align='center'>");


Antwort 24 von TByte

jaja, tschuldigung, bin grad wirre im kopf. aber worauf ich hinaus wollte ist, wie man die anführungszeichen setzen soll, damit der browser das auch kapiert.
mfg
TByte

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: