Aufruf von Javascript Funktion aus externer Datei

Hallo zusammen

Ich habe die Datei ticker.js mit dem Javascript Code erstellt und wollte diese nun auf meiner Seite einbinden.

Im Head:

Im Body, wo der Script angezeigt werden soll:

ticker.js:

function tickerhome(){

tNews=new Array();

//°°°°°°°°°°Die News
tNews.push(’…welcome…willkommen…bienvenue…bienvenuto…bainvegni’);

//°°°°°°°°°°Delimiter zwischen den einzelnen News
tDelimiter =’’;

//°°°°°°°°°°Interval in ms
tInterval =20;

//°°°°°°°°°°Stop bei mouseover?true:false
tStop =false;

//°°°°°°°°°°Falls Leeraum zwischen News…hier Wert erhoehen…minimum:1
tRepeat =2;

//°°°°°°°°°°Rahmen
tBorder =’’;

//°°°°°°°°°°Breite

if (screen.width < 1280) {
tWidth=687;
}

if (screen.width >= 1280) {
tWidth=898;
}

//°°°°°°°°°°Höhe
tHeight =42;

//Abstand Rahmen->Inhalt (top+bottom)
tPadding =1;

//Das Aussehen per CSS anpassbar unter Verwendung des Selectors #ticker

/* * * * * * * * * * * * * * * * * * D E R T I C K E R * * * * * * * * * * * * * * * * * * * * * */
IE = document.all&&!window.opera;
DOM = document.getElementById&&!IE;

if(DOM||IE)
{
var tGo,
tPos = 0,
tStop = tStop?‘onmouseover=“clearInterval(tGo)”’+ ‘onmouseout="tGo=setInterval(‘DM_ticken()’,’+tInterval+’)"’:’’,
tTxt = tDelimiter+tNews.join(tDelimiter),
tNews = tTxt;

    for(i = 1; i < tRepeat; ++i)
      {
        tNews+=tTxt;
      }
      
    document.write('<div style="overflow:hidden;border:' + tBorder +
                   ';width:' + tWidth + 'px;height:' + tHeight + 'px;' +
                   'padding:' + tPadding + 'px 0px ' + tPadding + ' px 0px;">' +
                   '<div style="position:absolute;width:' + tWidth + 'px;height:' + tHeight + 'px;'+
                   'overflow:hidden;clip:rect(0px '+tWidth+'px '+tHeight+'px 0px)">'+
                   '<span id="ticker"style="white-space:nowrap;position:relative;"' + tStop + '>' + tNews + 
                   '</span></div></div>');
    
    tObj = IE ? document.all.ticker : document.getElementById('ticker');

function DM_ticken()
  {
    tOffset = tObj.offsetWidth/tRepeat;
    if(Math.abs(tPos) > tOffset)
      {
        tPos=0;
      }
    tObj.style.left=tPos+'px';
    tPos=parseInt(tPos)-1;
  }

tGo=setInterval('DM_ticken()',tInterval);
}

}

Könnt ihr mir sagen, was ich dabei falsch mache?

Grüsse Curdin

Nicht ohne einen Link…

Hallo

Schreibst du XHTML oder HTML ?

Weil du meintest, dass du im head des script tag schreibst.

Wie soll des eigentlich etwa mal später aussehen :qst:

Also das kannst du mal vergessen:

<script>javascript:tickerhome()</script>

Außerdem sollte das Design ohne JS auch sichtbar sein :ps:

[quote=„Der_Admin“]
Schreibst du XHTML oder HTML ?

Wie soll des eigentlich etwa mal später aussehen :qst:[/quote]

XHTML, HTML spielt das so ne rolle? Theoretisch sollte es in XHTML sein.

Wie es aussehen soll: Dies ist eine Laufschrift, die in einer Tabelle ausgegeben wird. Eine Tabelle ist es, weil ich um diese Laufschrift einen Rahmen benötige.

[quote=„michi7x7“]
Außerdem sollte das Design ohne JS auch sichtbar sein :ps:[/quote]

Das verstehe ich ja, aber findest du es eine gute Idee, wenn ich es mit einem marquee realisiere?

Bei XHTML kann es bei JS passieren dass XHTML JS - Elemente als XHTML Elemente Ansieht.

EDIT: Bei XHTML Js elemente im Head , bei HTML im body.

NEIN!
marquee ist Microsoft-Zeugs und nicht valide.

Der Inhalt kann aber durchaus immer komplett sichtbar sein, mit JS stellst Du “nur” eine zusätzliche Funktionalität zur Verfügung (also erst mit JS den Inhalt verstecken und animiert wieder ausgeben).

edit: Javascript sollte eigentlich -ähnlich wie CSS- komplett in eine eigene Datei(en) ausgelagert werden.
Puristen (wie ich :smiley:) verzichten dann sogar auf event-Handler () und realisieren das ausnahmslos mit JS.

Ich meien damit eher tWidth und tHeigth :wink:

jedenfalls funktioniert nicht.
Das müsste so aussehen:

Oder du fügst es dem Onload deines Body hinzu:

Das stimmt nicht

Wie dann ?

Also bei XHTMl muss es im head sitzen!
(Im meinem Tutorial wurde des so erklärt.)

[quote=“i.deFix”]Javascript sollte eigentlich -ähnlich wie CSS- komplett in eine eigene Datei(en) ausgelagert werden.
Puristen (wie ich :smiley:) verzichten dann sogar auf event-Handler () und realisieren das ausnahmslos mit JS.[/quote]

Ich habe es jetzt mal so gemacht, wie michi7x7 es geraten hat.

Es funktioniert nicht, wie es sollte. Es wird jetzt nur noch zuoberst der Text angezeigt, welcher in dieser Tabelle durchlaufen sollte.

Ihr könnt das Ergebnis selber anschauen: http://curdin-caspar.bplaced.net/ticker/ticker.html

FireBug:"DM_ticken is not defined"
Schreibfehler?

bei XHTML muss es auch nicht im Head sitzen, es ist aber allgemein so üblich und kann unter Umständen in manchen XML-Parsen zu Problemen führen (aber deswegen gibt es CDATA).
Jeder Moderne Browser sollte eine gültige Deklaration schlucken

[quote=“i.deFix”]FireBug:"DM_ticken is not defined"
Schreibfehler?[/quote]

Sollte es eigentlich nicht sein.

Vieleicht sollte ich noch Anmerken, das der Script nicht von mir ist, sondern dass ich ihn von hier: http://www.doktormolle.de/temp/ticker2.htm kopiert habe.

Er hatte zuvor auch schon funktioniert, als ich den code noch nicht in eine funktion gepackt habe. Dies habe ich getan, weil dies nicht die Einzige Seite sein soll, in der diese funktion gebraucht wird, einfach mit anderen Texten.

Hat niemand mehr eine Idee?

Wieso machst du dann statt der function nicht einfach mehrer Dateien und verlinkst sie mit den verschiedenen seiten :qst:

Wieso sollte ich 10 Dateien machen, wenn es eigentlich auch mit einer gehen würde :qst:

Wenns dann geht is doch gut oder ?

Ja, gut ist es schon, aber wenn es anders ginge, hätte ich es gerne so gemacht.