[HTML/JavaScript] diverse Fragen / Diskussion

Fragen zu allen anderen Programmiersprachen.
es_91
Beiträge: 410
Registriert: 25.01.2011 04:48

[HTML/JavaScript] diverse Fragen / Diskussion

Beitrag von es_91 »

Code: Alles auswählen

<!DOCTYPE html>
<html><head><script type="text/javascript">function killElement(element) {If (element) {var papa = element.parentNode;If (papa) papa.removeChild(element);}}</script>
</head>
<body>
<font face="Courier"><div id="background" style="width:720px;">
</div></font>
<script type="text/javascript">
document.getElementById("background").innerHTML = "Guten Tag.<br />"
</script>
<script type="text/javascript">
killElement(document.getElementById("background"));
</script>
</body>
</html>
Sollte <div> "background" nicht eigentlich gelöscht werden? Stattdessen wird "Guten Tag." angezeigt. :?
Zuletzt geändert von es_91 am 06.04.2014 10:20, insgesamt 1-mal geändert.
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: [HTML/JavaScript] Warum löscht es dieses <div> nicht?

Beitrag von RSBasic »

Code: Alles auswählen

<!DOCTYPE html>
<html>
    <head>
        <script type="text/javascript">
             onload = function() {
                var papa = document.getElementById("background");
                if (papa) {
                    papa.innerHTML = "Guten Tag.<br />"
                    papa.parentNode.removeChild(papa);
                }
            }
         </script>
    </head>
    <body>
        <font face="Courier">
            <div id="background" style="width:720px;"></div>
        </font>
    </body>
</html>
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
es_91
Beiträge: 410
Registriert: 25.01.2011 04:48

Re: [HTML/JavaScript] Warum löscht es dieses <div> nicht?

Beitrag von es_91 »

Okay, dann wird das div Element wohl beim Laden der Seite gelöscht. Was aber ist, wenn ich zum Beispiel eine Timer-Funktion einbauen möchte? Alles JavaScript, nehme ich mal an. Also kann man nicht einfach im <body>-Bereich eine JavaScript-Funktion starten? Einstweilen danke ich Dir, RSBasic!
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: [HTML/JavaScript] Warum löscht es dieses <div> nicht?

Beitrag von RSBasic »

Javascript gehört nicht in den Body-Bereich. Wann soll dein Div-Element entfernt werden? Nach einigen Sekunden oder nach einem Buttonklick?
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
es_91
Beiträge: 410
Registriert: 25.01.2011 04:48

Re: [HTML/JavaScript] Warum löscht es dieses <div> nicht?

Beitrag von es_91 »

In dem Kontext, in dem ich das Löschen des div-Elements verwende, sollen dem Programmierer alle Freiheiten gegeben werden, mit PureBasic-Code (serverseitig) das Löschen des div-Elements auszulösen. Es kommen also Zeitgeber, onClick-Events, Dateioperationsbedingungen, eigentlich alles was man programmieren kann, in Frage.

Sag mir einfach: muss ich für jeden möglichen Grund der Löschung einen eigenen Java-Script-Pendanten für das in PB programmierte finden?

Um das mal ein Bisschen zu veranschaulichen, hier mal eine PSP-Datei ("PureServerPages"):

Code: Alles auswählen

<$
	IncludeFile "PSP\Console.pbi"
$>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<$
	Define Var
	Var = Date()
	*Console\OpenConsole()
	*Console\PrintN("Guten Tag.")
	
	If Var - Date() < -30000
	  *Console\CloseConsole()
	EndIf
$>
</body>
</html>
Wobei ...

- *Console\OpenConsole() ein div-Element erzeugt.
- *Console\PrintN() ein Java-Script ausführt, welches den innerHTML-Wert des div Elements beeinflusst.
- *Console\CloseConsole() das div-Element löschen soll.

Kompiliert sieht das dann so aus (bis jetzt):

Code: Alles auswählen

<!DOCTYPE html>
<html>
<head>
</head>
<body>
<font face="Courier"><div id="background" style="width:720px;">
</div></font>
<script type="text/javascript">
document.getElementById("background").innerHTML = document.getElementById("background").innerHTML + "Guten Tag.<br />"
</script>
</body>
</html>
Ich suche... /EDIT: Und ich hab's verstanden. Ich muss clientseitigen JavaScript-Code erzeugen. Was ich oben gemacht habe funktioniert nur serverseitig.

Also muss ich für den Zweck, der mir vorschwebt, einen Scriptinterpreter schreiben, wie Kiffi es bei PB2Web gemacht hat.

Der PSP-Code sieht dann wie folgt aus:

Code: Alles auswählen

<$
	IncludeFile "PSP\Console.pbi"
$>
<!DOCTYPE html>
<html>
<head>
<script type="text/pbplusscript">
  Define Var = Date()
  
  If Var - Date() < -30000
<$
    *Console\CloseConsole()
$>
  EndIf
</script>
</head>
<body>
<$
	*Console\OpenConsole()
	*Console\PrintN("Guten Tag.")
$>
</body>
</html>
:roll:

/EDIT2: Nein, irgendwas mache ich in meiner Denklogik immernoch falsch.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: [HTML/JavaScript] Warum löscht es dieses <div> nicht?

Beitrag von Kiffi »

es_91 hat geschrieben:/EDIT2: Nein, irgendwas mache ich in meiner Denklogik immernoch falsch.
vielleicht liegt das ja daran, dass Du serverseitig so ohne weiteres gar kein DIV im Browser
des Clients löschen kannst.

PHP, ASP und Co können das auch nicht. Alles, was zwischen den Code-Markern (<?php ... ?> oder
<% ... %> oder <$ ... $>) wird auf dem Server ausgeführt, bevor es zum Client geschickt wird.

Schau Dir mal SpiderBasic an. Ich glaube, dass das was für Dich sein könnte.

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Re: [HTML/JavaScript] Warum löscht es dieses <div> nicht?

Beitrag von bobobo »

RSBasic hat geschrieben:Javascript gehört nicht in den Body-Bereich.
Was soll denn der Blödsinn ? :mrgreen:

die schönsten Sachen kann machen gerade wenn javascript nicht im Kopfbereich rumlungert

Code: Alles auswählen

<html><head><title>Test</title>
</head><body>
<h1 id="Test"
 onmouseover="this.innerHTML = 'Sehen Sie?'"
 onmouseout="this.innerHTML = 'Ich bin dynamisch'">Ich bin dynamisch</h1>
</body></html>
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: [HTML/JavaScript] Warum löscht es dieses <div> nicht?

Beitrag von RSBasic »

Das ist aber ein schlechter "Programmier"stil. Und solche Inline-Events wie onmouseover wie du es grad gemacht hast, ist auch nicht so schön. Lieber extern eine separate Javascript-Datei erstellen und dort ein Observe auf ein DOM-Element setzen. Ist besser wartbar, übersichtlicher und strukturierter als ein Spaghetticode.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
es_91
Beiträge: 410
Registriert: 25.01.2011 04:48

Re: [HTML/JavaScript] Warum löscht es dieses <div> nicht?

Beitrag von es_91 »

Und gleich noch ein Problem:

Warum funktioniert dieses Script nicht, wie es offenbar soll:

Code: Alles auswählen

<!DOCTYPE html>
<html>
  <head>
    <script type="text/javascript">
      onload = function() {var ConsoleBgDiv = document.createElement("div"); 
      ConsoleBgDiv.style.width = "720px";
      document.getElementById("ConsoleBG").appendChild(ConsoleBgDiv);
      document.getElementById("ConsoleBgDiv").innerHTML = document.getElementById("ConsoleBgDiv").innerHTML + "1<br />";
      document.getElementById("ConsoleBgDiv").innerHTML = document.getElementById("ConsoleBgDiv").innerHTML + "2<br />";
      document.getElementById("ConsoleBgDiv").innerHTML = document.getElementById("ConsoleBgDiv").innerHTML + "3<br />";
      document.getElementById("ConsoleBgDiv").innerHTML = document.getElementById("ConsoleBgDiv").innerHTML + "4<br />";
      document.getElementById("ConsoleBgDiv").innerHTML = document.getElementById("ConsoleBgDiv").innerHTML + "5<br />";
    } </script>
  </head>
  <body>
    <font family="courier">
      <span id="ConsoleBG">
      </span>
    </font>
  </body>
</html>
Es soll
1
2
3
4
5
angezeigt werden.
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: [HTML/JavaScript] Warum löscht es dieses <div> nicht?

Beitrag von RSBasic »

Schau die Konsole an (F12 oder so), dann zeigt er dir im Browser auch die Javascript-Fehler an.
Siehe Zeile 9. Das Element "ConsoleBgDiv" ist Null und kann nicht gefunden werden.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Antworten