Feld (Computed when Composed + multiple values) per javascript auslesen

  • Hallo Profis ;)


    Ich hab eine Maske mit einem berechneten Feld das beim öffenen aktelle Meldungen eingelesen werden und diese per ticker (javascript) durchlaufen.


    Das Feld hat mehrere Werte, wie kann ich jetzt auf die einzelnen Werte zugreifen?


    Geht das überhaupt, d.h kann ich im onLoad ereignis das Feld schon auslesen. Wenn nicht, hat schon mal jemand einen Newsticker gemacht und kann mir hier einen Tipp geben?


    Vielen Dank!

  • Du koenntest im onLoad - event folgendes schreiben:

    Code
    var Werte = window.document.forms[0].Feldname.value.split(";");
    
    
    for ( var i = 0; i < Werte.length; i++ )
    	{
    		alert(Werte[i]);
    	}


    Vorausgesetzt, Du hast bei dem Trennzeichen fuer die einzelnen Werte ein Semikolon gewaehlt. Ansonsten anpassen.

  • Danke, damit konnte ich mir jetzt schon mal die newsliste zusammenbauen. Jetzt habe ich aber das nächste Problem.


    Die javascriptfunktion im Header soll dafür sorgen, dass bei allen News im Array wie bei Schreibmaschinen die Buchstaben auftauche und, dann den gesamten Newstitel etwas anzeigen, und dann den nächsten aufbauen. Das funktioniert auch, sofern ich das Array nicht an die funktion übergebe, sondern es ebenfalls im JSHeader mit festen werten Belege und im onload nur den Aufruf mache.


    Da ich ja aber das Feld, dass die Newstitel bekommen soll im onload auslesen muss, muss ich das array übergeben. Leider kommt das Script jetzt nicht über den ersten Buchstaben hinaus und bricht dann mit der Fehlermeldung:


    "newslist has no properties" ab.


    Ich steh mit javascript auf Kriegsfuss ;)
    Ich poste daher einfach mal das Script


    im JS Header:

    Code
    var cnt=0;			// current news itemvar curr = "";var i=-1;			// current letter being typed//alert(document.forms[0].allnews.value)function newsticker(newslist){	// next character of current item	if (i < newslist[cnt].length - 1)	{		i++;		temp1 = newslist[cnt];			temp1 = temp1.split('');	  		curr = curr+temp1[i];  		document.forms[0].news.value = curr  		setTimeout('newsticker(newslist)',10)		return;	}	// new item	i = -1; curr = "";	if (cnt<newslist.length-1)		cnt++;	else		cnt=0;	setTimeout('newsticker(newslist)',3000)}



    im onLoad:

    Code
    var newslist = window.document.forms[0].allnews.value.split(";");
    
    
    newsticker(newslist);


    Danke!

  • Damit das funktioniert muss das Feld natürlich als HTML existieren was bei einem Computed Feld nicht der Fall ist, außer du hast die Option Generate HTML for all fields aktiviert.


    Wenn nicht kannst du das Feld z.B. durch Durchgangs-HTML verfügbr machen (Dieses muss den HTML Code für das Feld enthalten)

  • Also das auslesen funktioniert schon mal, auch das anzeigen. Jetzt hab ich aber ein anderes Problem. habe es etwas laufen lassen, und nach etwa 2 Minuten kam eine Meldung:


    javascript error


    das war alles. Jetzt kann ich die Maske mit dem Newsticker nicht mal mehr öffnen, bekomme immer den gleichen Fehler.


    Was ist da jetzt schie gelaufen?


    onload

    Code
    initnews()newsticker()


    jsheader

  • Wenn ich den Client neu starte, dann geht es wieder. Für etwa 2 Minuten, dann gleiches Spiel.


    Dass ich da keine aussagekräftige Fehlermeldung bekomme, erschwert mir das ganze ein wenig.

  • du sprichst mit einem absoluten JavaScript DAU ;)


    Ich habe leider keine Ahnung, wie man javascript in notes debuggen kann *g*. Kannst du mir da einen Tipp geben? In etwas einlesen kann ich mich ja ganz gut ;)

  • ja, alerts kenn ich ;)


    Aber ob die hier helfen? eigentlich funktioniert das Script ja die
    ersten 1-2 Minuten problemlos und dann - batsch. Völlig aus heiterem Himmel. Wenn ein Array oder eine Variable auf einmal leer wäre oder der Stack voll laufen würde, dann würde das Notes mir das doch sagen, oder? Bisher kam jedenfalls immer eine entsprechende Fehlermeldung.


    Gibt es eine Möglichkeit der Speicher zu leeren, wenn die News x mal durchgelaufen sind und dann das Dokument einfach neu zu laden?

  • nach dem 28 durschlauf der Funktion (also beim 29) bricht es ab


    Und mir ist aufgefallen, dass es hier abbricht


    if (i < newslist[cnt].length - 1)
    {
    i++;
    temp1 = newslist[cnt];
    temp1 = temp1.split('');
    curr = curr+temp1[i];
    window.document.forms[0].news.value = curr;
    setTimeout('newsticker()',25)
    return;
    }


    und zwar zwischendrin.
    :-?

  • Wenn ich es ohne den Schreibmaschineneffekt mache


    if (i < newslist[cnt].length - 1)
    {
    i++;
    temp1 = newslist[cnt];
    temp1 = temp1.split('');
    curr = curr+temp1[i];
    window.document.forms[0].news.value = curr;
    setTimeout('newsticker()',25)
    return;
    }



    scheint es zu gehen. Habs grad am laufen, mal schauen ob er auch irgendwann abbricht.


    Mal ne andere Frage zwischendurch. Kann ich irgendwie in dem Script dafür sorgen, dass der Feldinhalt mit den News neu geladen wird, bzw, das ganze betroffene Dokument neu aufgebaut wird?

  • Also so funktioniert es, werd dann einfach den Effekt weglassen.


    Jetzt muss ich nur noch das Dokument nach einigen durchläufen aktualisiern, damit neue News eingelesen werden. Leider finde ich nix :(

  • Niemand eine Idee?


    Ich habs eingehend glaube ich noch nicht erwähnt, das ganze soll im Notesclient laufen, nicht im Web!


    Der Newsticker funktionert soweit auch, nur muss ich es jetzt noch irgendwie hinbekommen, dass sich das Dokument neu lädt um die Newstitel neu einzulesen.


    Hoffe nicht, dass ich mir da falsche Hoffnungen mache ;)