probleme mit javascript und zählschleife

  • nabend also hab mal wieder ein problem mit einer meiner meinung nach zu dynamischen seite^^dieses thema bezieht sich zum teil auf das hier (keiner muss das zwangläufig lesen ich werde in dieser topic mein problem hoffnetlich klar genug darstellen...
    also mein problem ist ich will auf einer dynamischen seite ein form objekt

    [autoit]

    _IEFormGetObjByName($oIE, $i)

    [/autoit]

    per index ansprechen da es keinen namen hat der obrige quelltext würde ja rein theretisch dazu passen ABER es gibt unterschiedlich viele formen auf der website mal 10 mal nur 9 mal auch nur 3 das gute aber daran ist ich suche immer die letzte um dort bestimmte werte einzutragen ich habe mir gedacht könnte ich vll mit ner do-while-loop realisieren joa hat nur nicht ganz geklappt wie ich wollte^^
    zunächst einmal der ansatz meiner lösung(uninteressantes wurde weggelassen)

    Spoiler anzeigen
    [autoit]


    $form_position = 0
    Do
    $o_form = _IEFormGetObjByName($oIE, $i)
    $o_count2 = _IEFormElementGetObjByName($o_form, "count[2]")
    MsgBox(0,"form variable in loop",$o_count2)
    $i = $i + 1
    MsgBox(0,"i",$i)
    $form_position = $i
    Until $o_count2 = Not 0

    [/autoit]

    kurz zur erläuterung:
    da die funktion "_IEFormElementGetObjByName" Null liefert wenn Sie den passenden Wert nicht gefunden hat also "count[2]" wollte ich die schleife so lange hochzählen lassen bis der rückgabewert der ja in $o_count2 gespeichert wird NICHT null ist..die schleife interessiert sich recht wenig dafür und zählt einfach weiter...-.- vll könnte ein fehler sein dass ich den ganzen ausdruck markieren muss also so: Until ($o_count2 = Not 0)...hab da aber echt keine ahnung vll gibts auch eine bessere methode das letzte form objekt zu finden....
    PS:die MsgBox ist nur dazu da um für mich zu überprüfen dass das programm an dieser stelle korrekt arbeitet die werden bei einwandfreier leistung entfernt oder auskommentiert... :rolleyes:

    dann gibts noch ein wenig uninteressanteres problem ich habe eine konstante die vorher vom user in der gui eingegeben wird z.b. 2 nun muss ich nach einem form-objekt suchen dass bei diesem user bei korrekter eingabe den namen "user_id2" dachte da so an "user_id".$KONSTANTE..aber hier kann man leider nicht so wir in php arbeiten^^ da geht des ganze einfacher^^
    wär auch schon froh wenn mir jemand zu einem thema helfen könnte....


    hier der source-code der nach der form durchsucht werden soll(ausschnitt):

    Spoiler anzeigen


    <form action="/mach-das1.php" method=post>
    <---mach das 1 --->
    </form>
    <form action="/mach-Abz.php" method=post>
    <---mach Abz --->
    </form>
    <form action="/mach-jenes.php" method=post>
    <---mach das jenes --->
    </form>
    <form action="/mach-XYZ.php" method=post>
    <---mach das xyz --->
    </form>
    <form action="/das_will_ich.php" method=post>
    <---das will ich finden --->
    </form>
    und mal ist eben XYZ nicht da oder ebene doch da...oder noch viele andere formen

    • Offizieller Beitrag
    Zitat

    ich habe eine konstante die vorher vom user in der gui eingegeben wird z.b. 2 nun muss ich nach einem form-objekt suchen dass bei diesem user bei korrekter eingabe den namen "user_id2" dachte da so an "user_id".$KONSTANTE..


    Versuchs mal hiermit:

    [autoit]

    $ID = "user_id"
    $KONSTANTE = 2
    $value = "test"
    Assign($ID & "." & $KONSTANTE, $value)
    ; generiert Variable "$user_id.2" mit Inhalt $value
    ; der Punkt im Variablennamen widerspricht aber der Syntax
    ; daher kann Variable nur mit EVAL ausgelesen werden:
    MsgBox(0, "", Eval($ID & "." & $KONSTANTE))

    [/autoit]
  • Judden Daach,

    ich hab da mal was vorbereitet :D

    [autoit]


    #include <ie.au3>
    ;################################ script 1

    [/autoit][autoit][/autoit][autoit]

    Dim $iformLength
    $oIE = _IECreate ("file:///"&@ScriptDir&"\foobar.html")
    _IELoadWait($oIE)
    $o_Forms = _IEFormGetCollection ($oIE)
    If $o_Forms <>0 Then $iformLength = @extended -1
    $o_form = _IEFormGetObjByName($oIE, $iformLength)
    $o_feld1 = _IEFormElementGetObjByName($o_form, "count[0]")
    _IEFormElementSetValue($o_feld1, "1")
    $o_feld2 = _IEFormElementGetObjByName($o_form, "count[1]")
    _IEFormElementSetValue($o_feld2, "huhu")
    $o_send = _IEGetObjByName($o_form, "action",1) ;1 = das zweite Element bei Namensgleicheit
    $o_send.click()

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    ;################################ script 2

    [/autoit][autoit][/autoit][autoit]

    $userinput = InputBox("test","Bitte eine '2' eintippen:")
    $user_id = "user_id"&$userinput

    [/autoit][autoit][/autoit][autoit]

    $oIE = _IECreate ("file:///"&@ScriptDir&"\foobar.html")
    _IELoadWait($oIE)
    $o_Forms = _IEFormGetCollection ($oIE)
    For $o_Form In $o_Forms
    $oFormElements = _IEFormElementGetCollection ( $o_Form)
    For $oElement In $oFormElements
    If $oElement.name = $user_id Then
    _IEFormElementSetValue($oElement, $user_id)
    EndIf
    Next
    Next

    [/autoit]

    und hier noch meine test.html

    Spoiler anzeigen


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">

    <head>

    <title>fooobar</title>
    <meta http-equiv="content-type" content="text/html;charset=iso-8859-1" />
    <meta name="generator" content="Webocton - Scriptly" />

    </head>

    <body>
    <form action="./weiter.php" method="post">
    <input class="button" style="width: 100px;" name="count[0]" type="text">
    <input class="button" style="width: 100px;" name="count[1]" type="text">
    <input class="button" style="width: 100px;" name="count[13]" type="text">
    <input ondblclick="this.disabled=true" class="button" name="action" value="Weiter" type="submit">
    <input onclick="if (!confirm('Möchten Sie nicht auf die nächste Website?')) return false;" class="button" name="action" value="Nicht weiter" ondblclick="this.disabled=true" type="submit">
    </form>
    <form action="./weiter.php" method="post">
    <input class="button" style="width: 100px;" name="count[0]" type="text">
    <input class="button" style="width: 100px;" name="count[1]" type="text">
    <input class="button" style="width: 100px;" name="count[13]" type="text">
    <input ondblclick="this.disabled=true" class="button" name="action" value="Weiter" type="submit">
    <input onclick="if (!confirm('Möchten Sie nicht auf die nächste Website?')) return false;" class="button" name="action" value="Nicht weiter" ondblclick="this.disabled=true" type="submit">
    </form>
    <form action="./weiter.php" method="post">
    <input class="button" style="width: 100px;" name="count[0]" type="text">
    <input class="button" style="width: 100px;" name="count[1]" type="text">
    <input class="button" style="width: 100px;" name="user_id2" type="text">
    <input class="button" style="width: 100px;" name="count[13]" type="text">
    <input ondblclick="this.disabled=true" class="button" name="action" value="Weiter" type="submit">
    <input onclick="if (!confirm('Möchten Sie nicht auf die nächste Website?')) return false;" class="button" name="action" value="Nicht weiter" ondblclick="this.disabled=true" type="submit">
    </form>
    <form action="./weiter.php" method="post">
    <input class="button" style="width: 100px;" name="count[0]" type="text">
    <input class="button" style="width: 100px;" name="count[1]" type="text">
    <input class="button" style="width: 100px;" name="count[13]" type="text">
    <input ondblclick="this.disabled=true" class="button" name="action" value="Weiter" type="submit">
    <input onclick="if (!confirm('Möchten Sie nicht auf die nächste Website?')) return false;" class="button" name="action" value="Nicht weiter" ondblclick="this.disabled=true" type="submit">
    </form>
    <body>

    Einmal editiert, zuletzt von jonk (21. Oktober 2006 um 11:04)

  • so danke erstmal für eure antworten :)

    [autoit]


    $userinput = InputBox("test","Bitte eine '2' eintippen:")
    $user_id = "user_id"&$userinput

    [/autoit]


    ich glaub des war jetzt von jonk hat zum gewünschten ergebnis geführt des von bugfix hab ich nicht ausprobiert dürfte sicherlich auch funktionieren...
    @admins:topic solved ;)

    PS:find des richtig cool dass sich einige hier viel zeit für noobies nehmen um zu helfen einen :keks: an alle ;)