document.write() und document.close()

Tucker

Erfahrenes Mitglied
Hi,

bitte nicht meclern, aber ich wusste nicht wie ich mein Problem umschreiben sollte. Daran hing dann auch die Suche, wusste nicht nach welchem Schlagwort ich suchen sollte.

Ich batsle zur Zeit an meinem Gästebuch. Bisher hatte ich mit JavaScript keine Probleme.

Allerdings wollte ich nun etwas neues einbauen.

Es soll eine Tabellenzeile geschrieben werden, wenn man einen dafür vorgesehenen Link betätigt. Wenn man dann das zweite mal diesen Link betätigt, soll das neu geschriebene wieder verschwinden.

dazu hab ich mir folgendes Script ausgedacht.

Code:
<script language="JavaScript">
function zeileschreiben()
{
document.write('<inhalt der Zeile in der Tabelle')
}

function zeileloeschen()
{
//hier weiß ich schon nicht mehr weiter.
}

Wie schon gesagt, soll beim ersten betätigen die Zeile geschrieben werden, beim zweiten gelöscht werden. In PHP hätte ich dies mit einem if-clause realisiert. Weiterhin gibt es ja in PHP den Operatoren, der den Rest einer Division ausgibt. Gibt es den auch in JavaScrip? weil damit liese sich das Problem lösen, in dem man bei jedem betätigen des Links einer Variable 1 zu addiert. Dann könnt man durch diesen Operatoren auf gerade und ungerade Zahlen prüfen und dementsprechend das Zeile- schreiben und -löschen realisieren.

Weiterhin weiß ich nicht, an welcher STelle ich das Script einbinden muss, bzw. wie ich realisiere, dass die Zeile an einer ganz bestimmten STelle in den Quellcode eingefügt wird.


Vielen Dank für Hilfe im Vorraus.
 
Wenns wirklich ein Gästebuch werden soll und du die Daten auch speichern willst, dann kannst du dir den Aufwand mit javascript schenken. Hiermit kannst du die Daten nämlich nicht sichern. (Ich hoffe ich hab dein Problem richtig verstanden.)
 
Hi,

Du könntest zum Beispiel in der Tabellenzelle einen Div einfügen, den Du zu
Beginn mit der CSS-Eigenschaft display: none versteckst. Wird der Link
betätigt, wird die Eigenschaft auf block gesetzt. Bei wiederholtem Drücken
entsprechend wieder auf none.

Das folgende Skript wechselt zwischen Ein- und Ausblendung:
Code:
// Browsererkennung
IE = document.all && !window.opera;
DOM = document.getElementById && !IE;

function show_hide(strID){
    // Div-Objekt holen
    var myObj = (IE)?document.all[strID]:document.getElementById(strID);
    // Div ein- bzw ausblenden
    myObj.style.display = (myObj.style.display == "none")?"block":"none";
}
Die Tabelle mit zughörigem Link könnte wie folgt aussehen:
Code:
<table>
    <tr>
        <td><a href="#" onclick="show_hide1('divID')">zeile</a></td>
        <td><div id="divID" style="display: none;">Hallo, ich bin der Zeileninhalt!</div></td>
    </tr>
</table>
Ich hoffe, das hilft Dir weiter.

Ciao
Quaese
 
Was du suchst ist der Modulo-Operator '%'. Gibts normalerweise in jeder Programmiersprache (zumindest in C++,Java,PHP und VB).Z.B. 4%2. Also ich würde einfach beim löschen einen leeren String übergeben. Keine Ahnung ob das mit JS funktioniert. Mache auch erst JS seit 2 Tagen :D

Mike
 
Also, ichbrauche dieses Script für den Bereich, wo man seinen Eintrag in ein Gästebuch tätigt. Am Anfang soll eine Zeile stehen, in dem einLink steht, in meinen Fallen einLink zu einer Auflistung der benutzbaren bb-tags.Wenn man diesen Link betätigt, soll der Link durch die Auflistung mit den Tags ersetzt werden. Andernfalls kann der Link auch stehen bleiben und die AUflistung unter dem Link statt finden.

Mein erster Gedanke war ähnlich, wie ich es mit PHP realisiert hätte. Hab erst mit JavaScript angefangen, deshalb frag ich. Möglicherweise verdeutlicht sich meinProblem,wenn ich mal ein äquivalentes PHP Script schreibe, obwohl es sich ja mit PHP nicht Clientseitig realisieren lässt.

PHP:
<?php

$i=1

function Zeile_schreiben()
{
echo "<td>";
echo "<a href....>";
...
echo "</td>";
echo "</tr>";
}

function zeile_loeschen()
{
echo "</tr>";
}

$i+1; //Wert von i oll bei jedem Klick des Linkes um 1 erhöht werden

if ($i%2 == 0)
{
zeile_schreiben()
}

else 
{
zeile_loeschen()
}

?>

Der Wert von $i soll bei jedem Klick erhöht werden und entsprechend dem Rest wird die Zeile geschrieben oder nicht. Vor dem Script steht dann noch natürlich <tr>.

Allerdings wüsste ich jetzt nicht, wie ich dieses Problem clientseitig, sprich mit JavaScript realisierensollte.

Mein erster Gedanke war auch hier ähnlich mit document.write(). Allerdings weiß ich z.B. auch nicht, an welcher STelle ich das Scrip einbinden muss, damit es mir auch die eingeleitete Tabellenzeile schließt.


Ich hoffe ich konnte nun verständlicher mahcne,was ich meine.
 
Hi,

was gefällt Dir an dem von mir geposteten Script nicht?
Es sollte doch das realisieren, was Du wünschst. Du musst nur für die Zeile
"Hallo, ich bin der Zeileninhalt!" die Liste der verfügbaren bb-Tags einfügen.

Ciao
Quaese
 
Undanwelcher Stelle muss ich das Script einfügen?

Meine zweite Nachfrage war nicht gegen dich, sehe nur, bzw. verstehe dein Script nicht. Ist mir noch ein "bisschen" zu hoch. :)
 
Per document.write() kannst du nur wärend des Ladens der Seite Text ausgeben(mal von Netscape4 abgesehen).

Bei anderen Browsern entschärfst du damit, so es nach dem Laden der Seite ausgeführt wird, diese Seite komplett..... sie ist weg:-)

Nehme stattdessen innerHTML.... das können IE ab V4, Opera7,Netscape7 und Mozilla.

@pastors
Den Modulo-Operator gibts auch in Javascript ;)
 
Jetzt hab ich ein Problem, aus dem Grund, dass ich das Script nicht verstehe. Ist nicht böse gemeint, ist ja mein verschulden.

Ich wollte dieses schöne Script nun auf meiner Seite einbinden, um größerer Navigationsblöcke verschwinden zu lassen.

Ich habe einfach dann an zwei Stellen den Link und die div- Zeile eingefügt und schon kommen die Fehlermeldungen rein geflattert.

Als nächstes hab ich versucht, den Fehler mit Kopieren und Umbenennung der Funktion zu beseitigen, Fehl(er)anzeige.


Kann mir jemand helfen?
 

Neue Beiträge

Zurück