Matthias: Javascript-Code mit ASP dynamisch erzeugen???

Hallo zusammen,

ist es möglich, JS-Codezeilen dynamisch mit ASP zu erstellen?

Ich habe ein JS-Script, das mir Vorschaubilder von pdf-Dokumenten in einer Trefferliste anzeigen soll, wenn mit der Maus über einen entsprechend programmierten Link (onMouseOver="ShowMouseTip(this,event,'testvorschau_1')") gefahren wird.

Das (schon modifizierte) Javascript definiert die DHTML-Inhalte wie folgt:

MouseTip.AddTip("testvorschau_1","","");
MouseTip.AddTip("testvorschau_2","","");
MouseTip.AddTip("testvorschau_3","","");
usw.

Wenn ich nun ein For...Next-Schleife (s.u.) einbaue, dann kommt eine Syntax-Fehlermeldung, was mir auch einleuchtet.

Gibt es einen Trick, mit dem man JS-Codezeilen dynamisch mit ASP erstellen kann?

<%
  For i = 1 To rs.RecordCount
  ...
%>
    MouseTip.AddTip("testvorschau_<% = i %>","","");
<%
  Next
%>

Da ich nicht weiß, wieviele Ergebnisse die Datenbankabfrage jeweils zurückliefert muss ich das dynamisch erzeugen.

Danke für Hinweise.

Matthias

  1. Hallo zusammen,

    ist es möglich, JS-Codezeilen dynamisch mit ASP zu erstellen?

    Natürlich. Auf die gleiche Weise, wie du dynamisch HTML-Code erstellen läßt, kannst du auch Javascript-Code erstellen. Dabei mußt du nur bedenken, daß während des Generierens von Javascript in ASP der Javascriptcode natürlich noch nicht ausgeführt wird - das geschieht erst im Browser. Und ebenfalls ist darauf zu achten, daß du korrekten Javascript-Code generierst, sonst sieht's mit der Ausführbarkeit auch blöd aus.

    - Sven Rautenberg

    1. Hallo Sven,

      vielen Dank für Deine schnelle Antwort.

      Natürlich. Auf die gleiche Weise, wie du dynamisch HTML-Code erstellen läßt, kannst du auch Javascript-Code erstellen.

      Das ist die gute Nachricht.

      Dabei mußt du nur bedenken, daß während des Generierens von Javascript in ASP der Javascriptcode natürlich noch nicht ausgeführt wird -

      Heißt das, ich muss mit VB den JS-Code "vorbereiten" (strJSCode = strJSCode & ...) und dann komplett mit response.write(strJSCode) an die "richtige" Stelle schreiben?

      Und ebenfalls ist darauf zu achten, daß du korrekten Javascript-Code generierst, sonst sieht's mit der Ausführbarkeit auch blöd aus.

      Is' klar :)

      Ich werde es mal so probieren.

      Matthias

      1. Moin nochmal!

        Dabei mußt du nur bedenken, daß während des Generierens von Javascript in ASP der Javascriptcode natürlich noch nicht ausgeführt wird -
        Heißt das, ich muss mit VB den JS-Code "vorbereiten" (strJSCode = strJSCode & ...) und dann komplett mit response.write(strJSCode) an die "richtige" Stelle schreiben?

        Nö, nur wenn es sich nicht vermeiden läßt. Üblicherweise wird ASP alles das, was außerhalb von <% %> steht, ungefiltert 1:1 an den Browser schicken (soviel verstehe ich auch noch von ASP ;) ). Das meiste deiner Javascripte kannst du also ohne große Probleme direkt so notieren, wie du es gewohnt bist. Und wenn du ein paar ASP-dynamische Dinge für Javascript ausgeben willst, hilft ein an der richtigen Stelle platziertes response.write, beispielsweise für eine Variable.

        - Sven Rautenberg

        1. Hey nochmal,

          Üblicherweise wird ASP alles das, was außerhalb von <% %> steht, ungefiltert 1:1 an den Browser schicken (soviel verstehe ich auch noch von ASP ;) ).

          Ich denke, das die <% %> Syntax innerhalb einer JS-Anweisung beim Ausführen von JS als Fehler betrachtet wird.

          Das meiste deiner Javascripte kannst du also ohne große Probleme direkt so notieren, wie du es gewohnt bist. Und wenn du ein paar ASP-dynamische Dinge für Javascript ausgeben willst, hilft ein an der richtigen Stelle platziertes response.write, beispielsweise für eine Variable.

          OK, morgen ist auch noch ein Tag.

          Vielen Dank für Deine Hilfe.

          Matthias

          1. Yo!

            Üblicherweise wird ASP alles das, was außerhalb von <% %> steht, ungefiltert 1:1 an den Browser schicken (soviel verstehe ich auch noch von ASP ;) ).
            Ich denke, das die <% %> Syntax innerhalb einer JS-Anweisung beim Ausführen von JS als Fehler betrachtet wird.

            Falsch gedacht, denn zu dem Zeitpunkt, wo Javascript im Browser ausgeführt wird, ist kein ASP mehr da! Alles, was außerhalb von <% %> steht, wird als implizites "Response.write" gedeutet. Alles was innerhalb von <% %> steht, ist kein Response.write, sondern sind andere Anweisungen.

            Guck einfach mal in den Quelltext, der beim Browser ankommt, und du siehst nichts von ASP - und verstehst hoffentlich, wie schön man statisches Javascript generieren kann, welches doch dynamisch zusammengebaut wird.

            - Sven Rautenberg

            1. Guten Morgen Sven,

              was machen Browser nachts??? Ich weiß es nicht.

              Als ich jedoch heute morgen das Script wieder in Angriff genommen habe, um mir nochmals die Fehlermeldung (Syntax-Error) anzusehen, da hat die Sache ohne weiteres Zutun geklappt. Sprich: der entsprechenden JS-Code-Teil wird von VB dynamisch erzeugt, der Rollover klappt und zeigt die entsprechenden Vorschauen.

              Danke nochmals für Deine Hinweise.

              Matthias