Dalia: funktion aufruf?

Hallo zusammen!

Ich habe die folgende schleife:

<%for i = 1 to 10
<tr><td><input  Type="textbox" name="txtQty<%=i%>" size= "3" maxlength="3"></td>
<td><input  Type="textbox" name="txtDescription<%=i%>" size= "30" maxlength="30"></td>
<td><input  Type="textbox" name="txtUnitPrice<%=i%>" onblur="CalcAmount(document.Purchase.txtUnitPrice<%=i%>.value,document.Purchase.txtQty<%=i%>.value,<%=i%>)" size= "15" maxlength="15"></td>
<td><input  Type="textbox" name="txtAmount<%=i%>"  size= "15" maxlength="15"></td>
</tr>
next %>

und ich moechte nur eine javafunction aufrufen aber weiss nicht wie ich den i uebergeben soll?????
 die Funktion CalcAmount functioniert nicht!

function CalcAmount(Qty,Amount)
{
document.Purchase.txtAmount<%=i%>.value=Qty * Amount;
}

vielen dank,

Dalia

  1. guten Abend Dalia,

    bist du sicher, daß du wirklich "Javascript meinst ?
    so etwas:

    <%for i = 1 to 10

    ist erstens höchst ungewöhnlich und zweitens ziemlich unvollständig. Normalerweise würdest du eine "Zählung mit Javascript" ungefähr so aussehen lassen:
    for( i=1; i<x; i++ )

    next %>

    damit schließt du einen Script-Bereich wie in PHP, das hat höchstwahrscheinlich gar nichts mit Javascript zu tun und das "next" ist nirgends begründet.

    und ich moechte nur eine javafunction aufrufen aber weiss nicht wie ich den i uebergeben soll?????

    nicht weitergeben, sondern als Variable benutzen wäre die richtige Vorstellung (glaube ich).

    die Funktion CalcAmount functioniert nicht!
    function CalcAmount(Qty,Amount)
    {
    document.Purchase.txtAmount<%=i%>.value=Qty * Amount;
    }

    ja, wie soll sie auch, wenn ihr solches kryptisches und unerklärtes Zeug wie <%=i%> in die Quere kommt.

    Es sieht ganz danach aus, als ob du die Syntax einer gänzlich anderen Scriptsprache als Javascript auszugeben versuchst (ich könnte mich damit aber auch irren).

    Grüße aus Berlin

    Christoph S.

    1. Guten Abend Cristoph,

      ja das ist server/side script (ASP) wo ich in onblur eine javascript funktion aufrufen moechte

      function CalcAmount(Qty,Amount)
       {
       document.Purchase.txtAmount<%=i%>.value=Qty * Amount;
      }

      das prb ist das ich nicht weiss wie ich
      document.Purchase.txtAmount1.value=Qty * Amount;
      document.Purchase.txtAmount2.value=Qty * Amount;
      u.s.w.
      umgehen sollte

      ich programmiere mehr in ASP (daher kommt auch <%=i%>)

      herzliche Gruesse aus Montreal,

      Dalia

      guten Abend Dalia,

      bist du sicher, daß du wirklich "Javascript meinst ?
      so etwas:

      <%for i = 1 to 10
      ist erstens höchst ungewöhnlich und zweitens ziemlich unvollständig. Normalerweise würdest du eine "Zählung mit Javascript" ungefähr so aussehen lassen:
      for( i=1; i<x; i++ )

      next %>

      damit schließt du einen Script-Bereich wie in PHP, das hat höchstwahrscheinlich gar nichts mit Javascript zu tun und das "next" ist nirgends begründet.

      und ich moechte nur eine javafunction aufrufen aber weiss nicht wie ich den i uebergeben soll?????

      nicht weitergeben, sondern als Variable benutzen wäre die richtige Vorstellung (glaube ich).

      die Funktion CalcAmount functioniert nicht!
      function CalcAmount(Qty,Amount)
      {
      document.Purchase.txtAmount<%=i%>.value=Qty * Amount;
      }

      ja, wie soll sie auch, wenn ihr solches kryptisches und unerklärtes Zeug wie <%=i%> in die Quere kommt.

      Es sieht ganz danach aus, als ob du die Syntax einer gänzlich anderen Scriptsprache als Javascript auszugeben versuchst (ich könnte mich damit aber auch irren).

      Grüße aus Berlin

      Christoph S.

      1. guten Abend Dalia,

        ja das ist server/side script (ASP) wo ich in onblur eine javascript funktion aufrufen moechte

        ich habe unter "ASP" bisher etwas verstanden, was zwar duerchaus auf Server-Seite realisiert wird, aber gerade deswegen (fast) keinen Zugriff auf Javascript ermöglicht.

        Man kann zwar ASP mit Javascript füllen, man kann andere Proggrawmmiersprachen als VBScript verwenden ... aber meines Erachtens sollte man dann bei der einmal gewählten Scriptsprache bleiben, in deinem Fall scheint das dann VBScript zu sein. Was ist der Grund, daß du unbedingt eine Javascript-Funktion einbinden möchtest ? Und: kann man mal eine URL haben, um sich deinen gesamtzen Code anzuschauen und nach eventuellen Fehlern zu suchen ? Ich ahne ganz einfach, daß es den Umfang eines postings und die Geduld eines Forumlesers überfordert, wenn du deinen vollständigen Code hierher schreiben würdest ...

        Grüße aus Berlin

        Christoph S.

  2. Hallo zusammen!

    Ich habe die folgende schleife:

    <%for i = 1 to 10
    <tr><td><input  Type="textbox" name="txtQty<%=i%>" size= "3" maxlength="3"></td>
    <td><input  Type="textbox" name="txtDescription<%=i%>" size= "30" maxlength="30"></td>
    <td><input  Type="textbox" name="txtUnitPrice<%=i%>" onblur="CalcAmount(document.Purchase.txtUnitPrice<%=i%>.value,document.Purchase.txtQty<%=i%>.value,<%=i%>)" size= "15" maxlength="15"></td>
    <td><input  Type="textbox" name="txtAmount<%=i%>"  size= "15" maxlength="15"></td>
    </tr>
    next %>

    und ich moechte nur eine javafunction aufrufen aber weiss nicht wie ich den i uebergeben soll?????
    die Funktion CalcAmount functioniert nicht!

    function CalcAmount(Qty,Amount)
    {
    document.Purchase.txtAmount<%=i%>.value=Qty * Amount;
    }

    vielen dank,

    Dalia

    Hallo Dalia,
    erst mal eine kleine Korrektur

    <%for i = 1 to 10

    muß heißen
    <%for i = 1 to 10%>
    Zum Problem:
    Ich seh da 2 Möglichkeiten:
    1. onblur="CalcAmount(document.Purchase.txtUnitPrice<%=i%>.value,document.Purchase.txtQty<%=i%>.value,document.Purchase.txtAmount<%=i%>)"
    mit der zugehörigen JS-Funktion
    function CalcAmount(UnitPrice,Qty,Target)
    { Target.value=UnitPrice*Qty;
    }
    2. onblur="CalcAmount(<%=i%>)"
    mit der zugehörigen JS-Funktion
    function CalcAmount(i)
    { var UnitPrice=eval("document.Purchase.txtUnitPrice"+i);
      var Qty=eval("document.Purchase.txtQty"+i);
      var Amount=eval("document.Purchase.txtAmount"+i);
      Amount.value=UnitPrice.value*Qty.value;
    }

    Gruß Lutz

  3. Hallo dalie

    <%for i = 1 to 10

    ich habe zwar bislang wenig in ASP gemacht, bin mir aber ziemlich sicher, dass hier ein %> fehlt

    also <% for i=1 to 10 %>

    generell ist der Ansatz nicht verkehrt. Allerdings machst du es dir unnötig schwer:

    <tr><td><input  Type="textbox" name="txtQty<%=i%>" size= "3" maxlength="3"></td>
    <td><input  Type="textbox" name="txtDescription<%=i%>" size= "30" maxlength="30"></td>

    <td><input  Type="textbox" name="txtUnitPrice<%=i%>" onblur="CalcAmount(document.Purchase.txtUnitPrice<%=i%>.value,document.Purchase.txtQty<%=i%>.value,<%=i%>)" size= "15" maxlength="15"></td>

    Dein Problem liegt in der Funktion selbst. Du wertest i nicht aus

    function CalcAmount(Qty,Amount,Elementnummer)
     {
      document.Purchase["txtAmount"+Elementnummer].value=Qty * Amount;
     }

    auf diese Weise löst du dein Problem.

    hier fehlt wohl wieder ein einleitendes <%
     » next %>

    Viele Grüße

    Antje

    PS: Du solltest überprüfen, ob die Werte auch Zahlen sind. Schaue dazu mal in SELFHTML unter JavaScript-->Objekte --> unabhängige Funktionen nach