• 07.06.2024, 16:32
  • Registrieren
  • Anmelden
  • Sie sind nicht angemeldet.

 

mas

Full Member

Re: html-seite automatisch aus .txt generieren ?

Freitag, 29. August 2003, 13:53

Zitat von »crushcoder«

man kann aber mit

Quellcode

1
<script src="quadrat.js" type="text/javascript"></script>


eine javascript datei einbinden.

diese enthält dann die setMenue()-Befehle.


Und die Leute, die JavaScript deaktiviert haben, koennen das Menue der Seite dann nicht sehen...

Re: html-seite automatisch aus .txt generieren ?

Freitag, 29. August 2003, 14:06

Das is ja auch nur für Ihn

Re: html-seite automatisch aus .txt generieren ?

Freitag, 29. August 2003, 15:25

Zitat von »mas«

Und die Leute, die JavaScript deaktiviert haben, koennen das Menue der Seite dann nicht sehen...


könnt ihr leute (das bezieht sich bestimmt auf 50% des forums) die threads ma lesen bevor ihr antwortet. er hat es nu schon mehrfach gesagt, das es nur für den heimischen pc is...

Re: html-seite automatisch aus .txt generieren ?

Freitag, 29. August 2003, 22:29


ich machs aber gerne nochmal ;D

@ mas

die linkliste ist MEINE startseite, soll auch nur auf MEINEM
rechner funktionieren. ich wüsste nicht, warum ich meine
linksammlung der öffentlichkeit zugänglich machen sollte...
bei dem ganzen schmutzigen zeugs da drin ::)

Well, here's my first question. Do you think it's kind of dangerous handing out guns at a bank? (Michael Moore, Bowling for Columbine)

mas

Full Member

Re: html-seite automatisch aus .txt generieren ?

Samstag, 30. August 2003, 02:02

Zitat von »thore«


ich machs aber gerne nochmal  ;D

@ mas

die linkliste ist MEINE startseite, soll auch nur auf MEINEM
rechner funktionieren. ich wüsste nicht, warum ich meine
linksammlung der öffentlichkeit zugänglich machen sollte...
bei dem ganzen schmutzigen zeugs da drin ::)



Ich weiss, ich muesste besser lesen..

Re: html-seite automatisch aus .txt generieren ?

Samstag, 30. August 2003, 03:06

kopieren ist aber auch mal erlaubt (nach dem lesen):

die konfigurations-datei namens "daten.js":

Quellcode

1
2
3
4
5
6
7
setMenue("chip", "info", "[url]http://www.chip.de");[/url] 
setMenue("heise", "info", "http://heise.de"); 
setMenue("amazon", "shopping", "http://amazon.de");
setMenue("ac", "shopping", "http://www.aqua-computer-systeme.de");

setBereich("shopping");
setBereich("info");

man muss ein zweites array für die Namen der Bereiche füllen.

Könnte man aber auch noch ändern, das dies dynamisch gemacht wird...

die startseite:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
<html lang="de">
<head>
      <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
      <title>menu_test</title>
      <script type="text/javascript" language="Javascript">
      <!--
      var nodes = new Array() 
      function setMenue(name, bereich, url) 
      {
            var i = nodes.length; 
            nodes[i] = new Object(); 
            nodes[i].name = name; 
            nodes[name] = new Object(); 
            nodes[name].bereich = bereich; 
            nodes[name].url = url; 
      }
      
      var bereich = new Array()
      function setBereich(bName)
      {
            var i = bereich.length;
            bereich[i] = new Object();
            bereich[i]["bName"] = bName;
      }


      function begin() 
      {      
            var n;

            // process data 
            for(n = 0; n < bereich.length; n++)
            {
                  var name = bereich[n]["bName"];
            
                  var newBereich = document.createElement("th");
                  var newBName   = document.createTextNode(name);
                  newBereich.appendChild(newBName);
                  var newSpacer  = document.createElement("th");
                  newSpacer.setAttribute("width", "80");
                  newSpacer.setAttribute("class", "spacer");
                  var newSpacerTxt   = document.createTextNode(" ");
                  newSpacer.appendChild(newSpacerTxt);
                  document.getElementById("tbl_header").appendChild(newBereich);
                  document.getElementById("tbl_header").appendChild(newSpacer);
                  
                  var foundRelevants = 0;
                  for(var i = 0; i < nodes.length; i++)
                  {
                        var node = nodes[i].name;
                        if (nodes[node].bereich == name)
                        {
                              foundRelevants++;
                              
                              // Hier wird eine Tabellenzelle mit einem Link erstellt
                              var newNode     = document.createElement("td");
                              var newA        = document.createElement("a");
                                    newA.setAttribute("href", nodes[node].url);
                                    newA.setAttribute("target", "_new");
                              var newNodeName = document.createTextNode(node);
                                    newA.appendChild(newNodeName);
                                    newNode.appendChild(newA);
                              var newBlank1   = document.createElement("td");
                              var newBlank2   = document.createTextNode(" ");
                                    newBlank1.appendChild(newBlank2);
                              
                              // falls es noch nicht genügend Tabellenzeilen gibt
                              if (tbl_body.childNodes.length < foundRelevants)
                              {
                                    // wird ein <tr> erzeugt
                                    var newTR = document.createElement("tr");
                                    // und darin die neue Zelle eingefügt
                                    newTR.appendChild(newNode);
                                    newTR.appendChild(newBlank1);
                                    document.getElementById("tbl_body").appendChild(newTR);
                              }
                              else // wird die neue Zelle in die vorhandene table-row eingefuegt
                              {
                                    var actRow = document.getElementById("tbl_body").childNodes[foundRelevants-1];
                                    actRow.appendChild(newNode);
                                    actRow.appendChild(newBlank1);

                              }
                        }
                  }
            }
      }
      //-->
      </script>
      <script src="daten.js" type="text/javascript"></script>
</head>
<body onLoad="begin();">

<table border="0">
      <tr id="tbl_header">
      </tr>
      <tbody id="tbl_body">
      </tbody>
</table>

</body>
</html>


Läuft schonmal unter Safari & ie5 mac.
Aber nicht unter firebird/mozilla :-/
Aber das können nur Kleinigkeiten sein.
Gott hat die Welt ja nur in sieben Tagen erschaffen können, weil es keine installierte Basis gab.

Re: html-seite automatisch aus .txt generieren ?

Samstag, 30. August 2003, 04:44

crush, ich tu dir jetzt mal ganz doll danke sagen. nu kann
ich da dran noch ein bisschen rumspielen. ganz von selbst
coden kann ich das nicht, aber zum verstehen und basteln
müssten meine bescheidenen kenntnisse noch ausreichen ;D

besonderen dank natürlich für die kommentierung des codes!

mgfg
thore



update:

so, ich hab da nun ein bisschen dran rumgefummelt, dass es
der non-js-variante etwas ähnlicher wurde - vom design und
so ;)
zum einen werden die urls jetzt in der form 'bereich, name, url'
abgespeichert, was in der daten.js ein bisschen mehr übersicht
bringt, zum anderen ist mir aber auch ein bug aufgefallen, für
den ich keine lösung finden konnte:

der table funktioniert nur so lange, wie in jedem bereich gleich
viele einträge vorhanden sind. hat ein bereich mehr einträge,
als sein vorgänger, so werden dessen 'überschüssige' daten
beim vorgänger eingetragen.

ein beispiel (gleiche zahlen sind einträge im gleichen bereich):

Quellcode

1
2
3
1234
12 4
 2 4

wird zu

Quellcode

1
2
3
1234
124
24


ideen?



update2:

auf meiner suche nach dem perfekten browser bin ich nun über
opera gestolpert, und mit der nase in firebird gefallen. firebird
lädt den inhalt des javagedöns aber nicht. daraufhin hab ich mal
in die konsole geguckt, wo der fehler "tbl_body not defined" mit
verweis auf "if (tbl_body.childNodes.length < foundRelevants)"
gelistet ist. meine unglaublichen java-künste sind aber schon
zwanzig zeilen vorher am ende ;D

mfg
thore
Well, here's my first question. Do you think it's kind of dangerous handing out guns at a bank? (Michael Moore, Bowling for Columbine)

Re: html-seite automatisch aus .txt generieren ?

Freitag, 12. September 2003, 03:19

bei mozi muss man alles der document.getElementById aufrufen... man kann nicht an alles denken ;)

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "[url]http://www.w3.org/TR/html4/loose.dtd">[/url]
<html lang="de">
<head>
      <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
      <title>menu_test</title>
      <script type="text/javascript" language="Javascript">
      <!--
      var nodes = new Array() 
      function setMenue(name, bereich, url) 
      {
            var i = nodes.length; 
            nodes[i] = new Object(); 
            nodes[i].name = name; 
            nodes[name] = new Object(); 
            nodes[name].bereich = bereich; 
            nodes[name].url = url; 
      }
      
      var bereich = new Array()
      function setBereich(bName)
      {
            var i = bereich.length;
            bereich[i] = new Object();
            bereich[i]["bName"] = bName;
      }
      
      // NEU:
      // erzeugt eine leere <td>
      function getFillerTd()
      {
            var fillerTd = document.createElement("td");
            var newSpacerTxt   = document.createTextNode(" ");
            fillerTd.appendChild(newSpacerTxt);
            
            return fillerTd;
      }


      function begin() 
      {      
            var n;

            // process data 
            for(n = 0; n < bereich.length; n++)
            {
                  var name = bereich[n]["bName"];
                  
                  //////////////////////////
                  // Table-Head <th> erzeugen für den neuen Bereich
                  var newBereich = document.createElement("th");
                  var newBName   = document.createTextNode(name);
                  newBereich.appendChild(newBName);      
                  var newSpacer  = document.createElement("th");
                  newSpacer.setAttribute("width", "80px");
                  newSpacer.setAttribute("class", "spacer");
                  var newSpacerTxt   = document.createTextNode(" ");
                  newSpacer.appendChild(newSpacerTxt);
                  document.getElementById("tbl_header").appendChild(newBereich);
                  document.getElementById("tbl_header").appendChild(newSpacer);
                  // Ende TableHead
                  /////////////////////////
                  
                  var foundRelevants = 0;
                  for(var i = 0; i < nodes.length; i++)
                  {
                        var node = nodes[i].name;
                        var newTR;
                        if (nodes[node].bereich == name)
                        {
                              foundRelevants++;
                              
                              //////////////////////////////////////////////////////////////
                              // Hier wird eine Tabellenzelle mit einem Link erstellt
                              var newNode     = document.createElement("td");
                              var newA        = document.createElement("a");
                                    newA.setAttribute("href", nodes[node].url);
                                    newA.setAttribute("target", "_new");
                              var newNodeName = document.createTextNode(node);
                                    newA.appendChild(newNodeName);
                                    newNode.appendChild(newA);
                              var newBlank1   = document.createElement("td");
                              var newBlank2   = document.createTextNode(" ");
                                    newBlank1.appendChild(newBlank2);
                              //
                              //////////////////////////////////////////////////////////////
                              
                              
                              // falls es noch nicht genügend Tabellenzeilen gibt
                              if (document.getElementById("tbl_body").childNodes.length < foundRelevants)
                              {
                                    // wird ein <tr> erzeugt
                                    newTR = document.createElement("tr");

                                    // NEW:
                                    // Es werden <td>s aufgefüllt, und zwar soviele 
                                    // wie bisher Bereiche durch die obere Schleife gelaufen sind
                                    for (var k = 0; k < 2*n; k++)
                                    {
                                          newTR.appendChild( getFillerTd() );
                                    }
                                    
                                    // und darin die neue Zelle eingefügt
                                    newTR.appendChild(newNode);
                                    newTR.appendChild(newBlank1);
                                    document.getElementById("tbl_body").appendChild(newTR);
                              }
                              else // wird die neue Zelle in die vorhandene table-row eingefuegt
                              {
                                    var actRow = document.getElementById("tbl_body").childNodes[foundRelevants-1];
                                    actRow.appendChild(newNode);
                                    actRow.appendChild(newBlank1);
                              }
                        }
                  }
                  
                                                                  
                  // NEU:
                  // Falls es nicht soviele Bereiche gibt wie in einem Bereich vorher,
                  // werden hier <td>s aufgefüllt in den nächsten Reihen, damit die Anzahl passt
                  if (document.getElementById("tbl_body").childNodes.length > foundRelevants)
                  {
                        
                        for (var m=foundRelevants; m < tbl_body.childNodes.length; m++)
                        {
                              var actRow = document.getElementById("tbl_body").childNodes[m];
                              actRow.appendChild( getFillerTd() );
                              actRow.appendChild( getFillerTd() ); // zwei mal wg. der Spacer-<td>
                        }
                  }
            }
      }
      //-->
      </script>
      <script src="daten.js" type="text/javascript"></script>
</head>
<body onLoad="begin();">

<table border="1">
      <tr id="tbl_header">
      </tr>
      <tbody id="tbl_body">
      </tbody>
</table>

</body>
</html>


Hier mal mit Bugfixing, aber läuft trotzdem nicht unter Mozilla ::)
Ganz schön zickig der Browser.
Gott hat die Welt ja nur in sieben Tagen erschaffen können, weil es keine installierte Basis gab.

Re: html-seite automatisch aus .txt generieren ?

Samstag, 13. September 2003, 06:41

Zitat von »crushcoder«

bei mozi muss man alles der document.getElementById aufrufen... man kann nicht an alles denken ;)


kann man das ohne alles neu schreiben zu müssen noch ein-
bauen? als laie interpretier ich das jetzt mal so, als würde die
bisherige wertzuweisung element=("bla") durch ne kombination
aus element.id=("bla") und getelement("id") ersetz... aber ich
glaub da ist jetzt mehr pascal als java in dem code ;D


trotzdem gilt dir mein höchster dank, crushcoder, dafür dass
du dich damit auseinandersetz. werd bei gelegenheit mal nen
freund fragen, der w.informatik studiert, ob der sowas nicht
kleines tool mit GUI proggen will, das den html code fertich
ausspuckt. dann bräuchte man auch keine datenbanken oder
websprachen zu installieren. mal schaun. ansonsten hab ich
diese so erstellte linkpage wesentlich lieber als die trostlosen
favoriten-menüs... zumal man in die menüs kein css einbauen
kann ;)

thx crush!

mfg
thore
Well, here's my first question. Do you think it's kind of dangerous handing out guns at a bank? (Michael Moore, Bowling for Columbine)

Re: html-seite automatisch aus .txt generieren ?

Samstag, 13. September 2003, 21:33

das kam eh nur zweimal vor ;)

aber mit

Quellcode

1
tbl_body = document.getElementById("tbl_body")
am anfang der begin()-funktion sollte das auch gehen.
Gott hat die Welt ja nur in sieben Tagen erschaffen können, weil es keine installierte Basis gab.