# Mehrere Scripte auf einer Seite zusammenfassen



## diogenuss (30. April 2004)

Hallo aus Lanzarote,
bin kein kompletter JS-anfaenger mehr, aber ich habe offenbar erhebliche nicht-Kenntnisse in der Syntax.  auf meiner Seite 

http://www.lanzarote-global.com/lanzarote_deu.html

die urspruenglich mal mit fireworks, goLive und ein wenig von Hand programmiert wurde, moechte ich nun im Nachhinein noch zwei scripte einbauen. eine Diashow fuer die bilder im Rand rechts sowie einen kleinen Newsticker. scripte, die ich mir besorgt habe, funktionieren fuer sich allein wunderbar, aber in Verbindung mit meiner Seite nicht. ein script, Bildwechsel bei reload, funktioniert praechtig.

Bie fasse ich mehrere funktionen in einem script zusammen und rufe dies dann ueber den onLoad auf? bitte genau syntaktisch erklaeren, denn irgendwie habe ich vor allem Probleme, die umfangreichen scriptzeilen, die jetzt schon im quelltext stehen (siehe dort; zur zeit wird "onload="CSScriptInit();" aufgerufen), ordentlich einzubinden!

Oder gibt es noch eine elegantere Moeglichkeit fuer mich, um meine seite entsprechend zu erweitern?
sonnige gruesse und (hoffentlich) danke im voraus... .


----------



## Sven Mintel (30. April 2004)

Hallo....

zum Ersten: wenn du mehrere Funktionen bei ein und demselben event aufrufen willst(bspw.onload).... dann ist die Schreibweise:


```
<body onload="funktionsname1();funktionsname2();funktionsname3();">
```
usw.

was die mehreren Skripte betrifft... die kannst du auf verschiedene Arten in die Seite einbinden.

Zum einen kannst du alles innerhalb der Seite innerhalb eines einzigen <script>-Blocks notieren... für gewöhnlich innerhalb des <head>(muss aber nicht sein):

```
<script type="text/javascript">
<!--
function funktionsname1()
{
//.......
}
function funktionsname2()
{
//.......
}
function funktionsname3()
{
//.......
}
//-->
</script>
```
....du kannst aber auch mehrere Skriptblöcke nehmen.. das ist wurscht:

```
<script type="text/javascript">
<!--
function funktionsname1()
{
//.......
}
//-->
</script>


<script type="text/javascript">
<!--
function funktionsname2()
{
//.......
}
//-->
</script>


<script type="text/javascript">
<!--
function funktionsname3()
{
//.......
}
//-->
</script>
```


Je nach Zweck des Scripts kann es auch notwendig sein, dieses an einer bestimmten stelle im Dokument zu platzieren...z.B.
wenn per document.write() etwas ins Dokument geschrieben werden soll. Dann muss das Skript genau dort hin, wo du das, was das
Skript schreibt, selbst eintippen würdest... aber das war ja nicht die Frage 

Eine andere Möglichkeit... gerade bei umfangreichen Skripten, wie es bei dir der Fall ist, ist das Einbinden externer JS-Dateien.
Dabei fügtst du an die Stelle der Seite, wo du normalerweise das komplette Skript zu stehen hast, folgendes ein:

```
<script type="text/javascript"src="pfad/zur/datei.js"></script>
```
.... auf diese Art kannst du auch mehrere JS-Dateien einbinden:

```
<script type="text/javascript"src="pfad/zur/datei.js"></script>
<script type="text/javascript"src="pfad/zur/datei2.js"></script>
<script type="text/javascript"src="pfad/zur/datei3.js"></script>
```
Diese externen JS-Dateien enthalten alles, was auch innerhalb der <script>-Blöcke steht.... ausgenommen die <script>-Tags und die Kommentarklammern(<!-- //-->)
Abgesehen davon, dass das Einbinden externer JS-Dateien den Seitencode übersichtlicher macht, hat dies noch den Vorteil, dass diese Dateien extra im Browsercache liegen...
kommt ein Besucher bei dir auf eine andere Seite, wo die selben Skripte eingebunden sind, müssen diese nicht mehr neu geladen werden. Bei deinem Beispiel wären das immerhin schon 50kB gesparter Traffic...
und natürlich eine entsprechend geringere Ladezeit!

Wieviele Funktionen oder Skripte in einer Seite stehen,ist ansich egal, du musst dir nur darüber im Klaren sein, dass der Browser nicht zwischen den verschiedenen Skripten unterscheidet....
es dürfen also in verschiedenen Skripten nicht identisch benannte Funktionen/Variablen vorkommen.

Das wärs fürs Erste... ich hoff, es bringt dich weiter.


----------



## diogenuss (1. Mai 2004)

Vielen Dank. Da habe ich ja jetzt einige Optionen und viel zu tun *freu*.
Es ist Wochenende und ich werde basteln. Bevorzugt sollte ich eigentlich alle Deine Moeglichkeiten ausprobieren, damit ichs endlich ordentlich begreife ;-)). Steht ein CSscript von der Sprache und vom Aufbau her auch so da wie ein Jscript? Denn offenbar muss ich ein solches ja auch einbinden. Oder heisst das dann bei <language=""> nochmals anders?
Ich melde mich bei Erfolg und/oder Misserfolg.
sonnige gruesse
;-)


----------



## diogenuss (1. Mai 2004)

So. Weiter gekommen bin ich keinen meter!
ein script fuer die Diashow


```
var bild=new Image;
var dia=new Array ("images/banner/bannerlaera.jpg","images/banner/bannertomate.jpg","images/banner/bannerpedro.jpg","images/banner/bannerautoeli.jpg","images/banner/bannerrancho.jpg", "");
var a=-1;
function diashow()
{
a++;
window.document.images[0].src=dia[a];
if (a==4)
{
a=-1;
}
window.setTimeout ('diashow()', 2000);
}
</script>
```

habe ich mit

```
<body bgcolor="#ffffff" onload="window.setTimeout ('diashow()', 2000); CSScriptInit();">
```

eingegeben. das script funktioniert auf einer testseite tadellos, aber auf meiner page passiert nichts, d.h. es wird an der entsprechenden stelle nur das erste bild angezeigt und das wars mal wieder...  

weiterhin habe ich beim auslagern der funktionen offensichtlich das problem mit einem mir unbekannten parameter namens "cssriptdict" und "cssactiondict", (siehe quelltext http://www.lanzarote-global.com/lanzarote_deu.html  )
 die sich im quelltext bei golive finden... das auslagern der entsprechenden scripte bewirkt, dass beim aufrufen meiner seite die verschiedenen mouseover-effekte nicht mehr angezeigt werden.

oh weh oh weh - naja, der tag ist noch lang... ;-))


----------



## Sven Mintel (1. Mai 2004)

Moin....

zum ersten Problem.... da hast du bestimmt nur vergessen, irgendwo nen Tag aus der JS-Datei zu entfernen.
Das gibt dann einen Syntaxfehler, aufgrunddessen das ganze Skript für'n Müll ist.

Zum zweiten...

das "Dia"-Skript wird schon funktionieren, du siehst es nur nicht
WArum?
es wird ein Bild geändert, und zwar das erste, was sich in der Seite befindet...

```
document.images[0].src
```

Das erste Bild in deiner Seite ist:

```
<img src="images/spacer.gif" width="109" height="1" border="0" alt="">
```
....dieses ist 1px hoch....da sieht man natürlich nix.
Du willst wahrscheinlich ein anderes Bild wechseln.
Anstatt nun alle Bilder durchzuzählen und bei jeder Änderung in der Seite das Skript zu modifizieren, ist es angebrachter, dem Bild einen Namen zu verpassen, und es darüber anzusprechen:

```
document.nameDesBildes.src
```

Ich hab das alles mal in nen ZIP gepackt... ich hoff es läuft jetzt....


----------



## diogenuss (4. Mai 2004)

Danke. ist angekommen. Den fehler mit dem ersten bild des gesamten Dokumentes habe ich schoneinmal gemacht. Ich probiers und hoffe - so langsam, auch dank der einen oder anderen deutlichen Zurechtweisung ;-)) - kommt ein erster Durchblick...


----------



## diogenuss (5. Mai 2004)

hallo,

Leider habe ich beim download deines codes Schwierigkeiten! Das ganze kommt, egal was ich macht, ungefaehr "So" an:

schnipp
PKxxxxD¯¡0IB81 xef skript.jsÅ][sÚºx~ngúxxÎL°wxÁ??¤Ô§?ë>L¯S²ÓÙ'?é(¶5Æfl?4Éä?ï?³$Ù`?bxx'Oxii]>_?Dì?ï¾â`dT*?7¯?{]?xÈ@x¹E???ï`p0uÌ?ºx:îõL?NxF£¨èáÍk?» qx?M'_ñ?¨hÃ@?©c?xu?Ux2DãÓx ¦?ÓA?°ÚúÅe,Ês=åx{?x?x}'TªÛÄxx£xÝÚRß¼~x_¼¤}XL¹æ?\I]xxj(¢Q;?|zx?·Ô±ÜÛº?oèxx®W?úÄ;xx'è?uGxÄó?j?=?t?@a«êæx{?ágXN~}x(???º¥©5_¡ ÔüïÍã?/?`±¢X®9xxËú?x§6ax?îº??67Ñ?Òõ»§?º¹x?{·§ªè=
schnapp

bitte nochmals! Vielen Dank.


----------



## diogenuss (5. Mai 2004)

fatalus hat gesagt.:
			
		

> Ich hab das alles mal in nen ZIP gepackt... ich hoff es läuft jetzt....



Falscher Alarm! iMusste nur die doppelte Endung .zip.php abschaffen und nun hats funktioniert! Nun mach ich mich mal ans Einbauen!


----------



## diogenuss (6. Mai 2004)

Guten morgen und vielen Dank.
nicht nur, dass es funktioniert, sondern ich hab auch was gelernt bezueglich der struktur. Nirgends in den archiven habe ich diese "scriptdict" und "actiondict" gefunden. was sind denn dies fuer befehle? 
Dein script habe ich anschliessend auch auf meiner spanischen- und englischen seite eingebaut. mit dem erfolg, dass es, entsprechend umgewandelt, auf meiner spanischen seite laeuft (http://www.lanzarote-global.com/lanzarote_esp.html) und auf meiner englischen seite nicht. grrrr. ich bin schon so gut es geht den quelltest durchgegangen um nach kleinen fehlern zu suchen, aber erfolglos. gibt es allgemeine tipps fuer das aufspueren von solchen fehlerchen? 
Kann sich eigentlich nur um irgendein Zeichen zu viel oder zu wenig handeln - aber das ergebnis ist, dass mir  der fehler " 'bilder' ist nicht definiert" und danach das selbe mit "bannera" und "bannerb" ins haus fliegt... .
Sonnige gruesse - und fuer die hilfe hast du bei deinem naechsten lanzarote-urlaub schon mal ein gutes glas wein sicher... ;-)

diogenes


----------



## Sven Mintel (7. Mai 2004)

Diese komische Tags wirst du wahrscheinlich höchstens im Handbuch deiner Software finden

Was das aufspüren der Fehler angeht... da kenn ich nix spezielles... Javascript teilt halt nur mit, wo es ein Problem hat, die tatsächliche Ursache kann ganz woanders liegen.

Oftmals ist der erste gemeldete Fehler, wenn es z.B. ein Syntaxfehler ist, der aufschlussreichste.... weitere Fehler resultieren dann idR. aus diesem.... kann dann halt auch ein fehlendes Anführungszeichen oder soetwas sein.

Vielleicht stimmt auch einfach der Pfad zur externen JS-Datei nicht.
Kannst ja mal zum Testen in selbige einen alert hineintun... der sollte dann beim Seitenaufruf kommen, wenn das Skript gefunden wird.


----------



## diogenuss (10. Mai 2004)

*Diashow-bilder verlinken*

Ja, offenbar hat meine software da so ihre eigenen Definitionen drin. naja, man lernt nie aus. nochmals vielen dank fuer die hilfe, ich bin erheblich weiter gekommen und fange, nach langsamen erkennen der strukturen, froehlich an, meinen quelltext auch wirklich zu "meinem" zu machen... . (naja, jeder faengt mal klein an). kann ich mein bestehendes diashow-script eigentlich um eine funktion erweitern, die zu jedem bild einen entsprechenden link definiert?

Sonnige Gruesse

diogenes


----------



## Sven Mintel (10. Mai 2004)

Moin....



> fange.....froehlich an, meinen quelltext auch wirklich zu "meinem" zu machen


...das ist löblich ...ich muss sagen, dass ich auch nicht verstehe, worin die Notwendigkeit dieser exotischen Tags und der 50kB Skriptcode liegen soll.

Was die Links betrifft, das ist in halbwegs aktuellen Browsern kein Problem.
Platziere irgendwo ein <span>und ändere per Javascript dessen "innerHTML".


----------



## diogenuss (11. Mai 2004)

fatalus hat gesagt.:
			
		

> [ich muss sagen, dass ich auch nicht verstehe, worin die Notwendigkeit dieser exotischen Tags und der 50kB Skriptcode liegen soll.



vielleicht, um den nicht tiefer nachforschenden anwender an die entsprechende software zu fesseln...


----------



## web-netz (11. Mai 2004)

gute diskussion. dazu ein kleiner tipp.auf der website http://www.web-netz.de findest du einen umfangreichen workshop zum thema java script. das hier behandelte thema wird dort ausführlich beschrieben.


----------



## diogenuss (12. Mai 2004)

> _Original geschrieben von web-netz _
> *gute diskussion. dazu ein kleiner tipp.auf der website http://www. findest du einen umfangreichen workshop zum thema java script. das hier behandelte thema wird dort ausführlich beschrieben. *



Hehe, leider habe ich unter "www" zu viel gefunden, um das gewuenschte rauszusuchen    - bitte nochmals posten.


----------



## Sven Mintel (12. Mai 2004)

@diogenuss

...der Link von dem Kollegen wurde zensiert, verschiebs einfach nach c:/spam


----------



## diogenuss (12. Mai 2004)

Aha! achso... hier also auch.
danke fuer den Hinweis - naiv wie ich bin und bleibe hab ich das "hier" natürlich nicht vermutet... . 

diogenes


----------

