JavaScript: "Hello World" schreiben geht nich
-
Hallo,
ich versuche mich gerade in JavaScript und hab jetzt folgende Fragen:
1. Ist es mit einer JS Funktion moeglich einen Text a la "Hello World" auf die SELBE Internetseite zu schreiben, bspw haette ich gerne nach anklicken eines Buttons oder ueberfliegen eines Textes darunter den neuen Text geschrieben?
Bisher habe ich folgendes versucht:function testme(){ if(!document.write) return; document.write('<i style="background-color:#000080; color:#8080C0">test</i>'); };
Diese Funktion habe ich an einen Button gehaengt. Jedesmal wenn ich den Button klicke, kommt zwar der Text, jedoch immer in einem neuen Browserfenster.
2. Ich wollte versuchen in JS soetwas wie einen blinkenden Cursor hinzubekommen (und eben NICHT als gif). Abgesehen von dem obigen Problem - das auch hier auftritt - habe ich das Problem, wie setze ich genau eine leere Zeichenbreite bzw wie manipuliere ich sie (z.B: Hintergrund setzen)?
Hier wollte ich so vorgehen:function waitAndBlink() { if(!window.setTimeout) return; if(!document.write) return; var isCursorOn = true; window.setTimeout("waitAndBlink()", 1000); if(isCursorOn){ // soll ein freies Zeichen mit Farbe 1 setzen document.write('<i style="background-color:#8080C0; color:#000080"> </i>'); isCursorOn = false; }else{ // sollte das selbe Zeichen mit Farbe 2 setzen document.write('<i style="background-color:#000080; color:#8080C0"> </i>'); isCursorOn = true; } };
Ich denke, wenn das ueberhaupt irgendwie geht muesste man wohl auch noch einen Wagenruecklauf \r einbauen, aber egal. Wie bekomme ich ueberhaupt den Hintergrund von genau einem (leeren) Zeichen mittels JS in einer bestimmten Farbe gesetzt?
Danke im voraus!
-
document.write() ist nicht gedacht, um zur Laufzeit Inhalte zu verändern, sondern, um beim Laden der Webseite dynamische Ausgaben zu tätigen.
Was du suchst, ist prinzipiell mit den Eigenschaften des DOM (Document Object Model) machbar, allerdings sehr aufwändig.
Nicht offiziell, aber von der breiten Masse an Browsern unterstützt, ist jedoch das Attribut innerHTML, dass du u.a. auf jeden <div>-Tag anwenden kannst.
<div id="dynamic">Hier steht etwas</div> <script type="text/javascript"> // <![CDATA[ function printNew(id, text) { document.getElementById(id).innerHTML = text; } printNew("dynamic", "Hier steht etwas neues"); // ]]> </script>
-
Hallo,
Danke, ich hab es nun auch per <div> versucht und es klappt damit soweit.Nur, wie erzeuge ich nun ein einzelnes Leeres Zeichen bzw. Hintergrundfarbe fuer nur eineinziges Zeichen? Soll ich hier einfach irgendein Zeichen nehmen und Vordergrundfarbe == Hintergrundfarbe setzen?
Zu Deinem Code habe ich noch eine Frage: was bedeutet das printNew() hier?
Edit:
Wie ich soeben Feststellen musste, erhalte ich folgendes sehr seltsames verhalten (Browser Firefox, kA, liegt das am Browser??):document.getElementById('container').innerHTML += <i>blablabla</i> + <i style="background-color:#000080; color:#FFFFFF">test</i>;
Hier werden alle Formatierungen (Farbe und italic) korrekt angezeigt.
document.getElementById('container').innerHTML += <i>blablabla</i>;
Hier nicht??!!! Warum ist das so, wie bring ich die eine Zeile dazu ebenfalls ein "korrektes" verhalten zu erzeugen?
-
Fabeltier schrieb:
Nur, wie erzeuge ich nun ein einzelnes Leeres Zeichen bzw. Hintergrundfarbe fuer nur eineinziges Zeichen? Soll ich hier einfach irgendein Zeichen nehmen und Vordergrundfarbe == Hintergrundfarbe setzen?
Ich verstehe nicht ganz, was genau du willst?
So etwas?
<span style="background-color: red;"> </span>
Oder so etwas?
<div style="background-color: red; width: 25px; height: 25px;"></div>
Oder etwas ganz anderes?
Fabeltier schrieb:
Deinem Code habe ich noch eine Frage: was bedeutet das printNew() hier?
Das ist der Name der Funktion, die ich da definiert habe. Dafür kannst du auch jeden beliebigen anderen Namen festlegen (es sollte aber kein reservierter sein).
-
Oups, danke nochmal fuer Deine Geduld!!!
Die erste Zeile (span) wird bei mir nicht ausgefuehrt, die andere schon - in die Richtugn geht es, ich habe nun folgendes versucht (was auch klappt, aber naja..):
<i style="background-color:#8080C0; color:#8080C0">_</i> + <i></i>;
Seltsamerweise kommen bei mir eben keine Formatierungen durch ohne einen mit '+' verknuepften Zusatz, wie etwa oben (s.h. Edit). Komisch, weisst Du dafuer auch noch rat??
-
Du musst Strings in JavaScript schon wie Strings behandeln, i.e. sie entsprechend in Hochkommata einschließen:
<script type="text/javascript"> // <![CDATA[ document.getElementById('container').innerHTML = document.getElementById('container').innerHTML + '<i>blablabla</i>' + '<i style="background-color:#000080; color:#FFFFFF">test</i>'; // ]]> </script>
Abgesehen davon ist es sinnfrei, einem <i>-Tag einen Style zuzuweisen; dafür gibt es <span> und <div>
-
RIESEN DANK!!!!
Es laeuft soweit. Tja, dass ich noch fast keine Ahnung von HTML hab, muss ich nicht weiter erklaeren. Ich werde sicherlich noch einige Fragen posten hier. Wenn ich weiter solche Antworten bekomme, bin ich in zwei Wochen Guru - YES!