Цикл vbscript через ввод html-формы

Я использую VBscript для манипулирования входными данными html-формы, помещения их в электронную таблицу и извлечения из нее.

Сама форма выглядит отчасти как...

    For i = 1 to NumberFigures
        document.write "<input name=""figno" & i & """ type=""text"">"
    Next

... что хорошо, когда i = 1, но я не уверен, как получить к нему доступ для случаев i > 1 из соответствующей функции. Выписка следует...

    For i = 0 to max
        Figno = "Form1.figno" & i+1 & ".Value"
        arr(i,19) = Figno
    Next

Это небольшая выборка. Результирующий собранный массив обновляется до электронной таблицы. Все работает хорошо, за исключением того, что arr(i,19) присваивается строковое значение «Form1.figno1.Value», а не значение во входном имени figno1 в Form1. Чтобы убедиться, что форма и ввод работают, я попытался использовать следующее...

    arr(i,19) = Form1.figno1.Value

... который возвращает значение ввода "figno1" для всех значений i. Так что с этой частью все в порядке.

Любая помощь очень ценится.

R

Обновить... обновили код по предложению. Ниже показана часть функции, которая обращается к форме. Как и здесь, он подтягивается к части arr(j,20) = Form1.children("figname" & j+1).Value и выдает следующее сообщение об ошибке: Требуется объект: '[object]'

    redim arr(NumberFigures-1,30)
    MsgBox(NumberFigures)
    For j = 0 to NumberFigures-1
        arr(j,0) = date()
        arr(j,1) = time()
        arr(j,2) = requestFlag
        arr(j,3) = requestNo
        arr(j,4) = requestNo
        arr(j,5) = strvar
        arr(j,6) = "New Request"
        arr(j,7) = "DRAFT"
        arr(j,8) = Form1.jobnumber.Value
        arr(j,9) = Form1.cost.Value
        arr(j,10) = Form1.client.Value
        arr(j,11) = Form1.project.Value
        arr(j,12) = Form1.reportNo.Value
        arr(j,13) = Form1.report.Value
        arr(j,14) = Form1.chapterNo.Value
        arr(j,15) = Form1.chapter.Value
        arr(j,16) = NumberFigures
        arr(j,17) = Form1.budget.Value
        arr(j,18) = Form1.required.Value                    
        arr(j,19) = Form1.children("figno" & j+1).Value
        arr(j,20) = Form1.children("figname" & j+1).Value
        arr(j,22) = Form1.children("fig01com" & j+1).Value
        arr(j,23) = Form1.children("fig02com" & j+1).Value

        If arr(j,23) <> "" Then                         
            pos = InStrRev (arr(j,23),"\")
            attachlength = len(arr(j,23)) - pos
            attachname = right(arr(j,23),attachlength)
            arr(j,24) = "\\bne-fs1\admin\Groups\GIS\Requests\" & requestNo & "\" & attachname
        End If

    Next

Код в теле... (таблица и строки уже определены к этому моменту)

    document.write "<form name=""Form1"" method=""post"" onsubmit=""blank()"">"
    document.write "<input name=""name"" type=""hidden"" VALUE=""" & strVar & """>"
    document.write "<input name=""jobnumber"" type=""hidden"" value=""" & FigureAdd(0,8) & """>"
    document.write "<input name=""cost"" type=""hidden"" value=""" & FigureAdd(0,9) & """>"
    document.write "<input name=""client"" type=""hidden"" value=""" & FigureAdd(0,10) & """>"
    document.write "<input name=""project"" type=""hidden"" value=""" & FigureAdd(0,11) & """>"
    document.write "<input name=""reportNo"" type=""hidden"" value=""" & FigureAdd(0,12) & """>"
    document.write "<input name=""report"" type=""hidden"" value=""" & FigureAdd(0,13) & """>"
    document.write "<input name=""chapterNo"" type=""hidden"" value=""" & FigureAdd(0,14) & """>"
    document.write "<input name=""chapter"" type=""hidden"" value=""" & FigureAdd(0,15) & """>"
    document.write "<input name=""budget"" type=""hidden"" value=""" & FigureAdd(0,17) & """>"
    document.write "<input name=""required"" type=""hidden"" value=""" & FigureAdd(0,18) & """>"

    For i = 1 to NumberFigures
        document.write "<td align=""center""><input name=""figno" & i & """ type=""text"" size=""5"" value=""figno" & i & """></td>"
        document.write "<td align=""center""><input name=""figname" & i & """ type=""text"" size=""60"" value=""figname" & i & """></td>"
        document.write "<td><textarea rows=""2"" cols=""40"" name=""fig01com" & i & """ form=""Form1"">fig01com" & i & "</textarea></td>"
        document.write "<td><input name=""fig02com" & i & """ type=""file"" size=""30""><input name=""fig03com" & i & """ type=""hidden""></td></tr>"
        document.write "<tr valign=""bottom""><td></td><td></td>"           
    Next

    document.write "</tr></table>"
    document.write "<input type=""button"" onclick=""Test()"" value=""Submit Request""></form>"

person RUski73    schedule 25.11.2013    source источник
comment
При каком значении j возникает ошибка? Действительно ли у Form1 есть дочерний элемент с именем "figname" & j+1? Используйте инструменты веб-разработки вашего браузера для проверки сгенерированного HTML.   -  person Ansgar Wiechers    schedule 26.11.2013
comment
Он зависал на j=0 ... но если бы у меня был только один Form1.children("figno" & j+1).Value, а остальные держались бы на Form1.figname1.Value, что бесполезно, но ради тестирования, то он бы зависал на j=1. Посмотрев на сгенерированный html (спасибо! никогда не знал, что смогу), я удалил таблицу, и, похоже, она работает отлично. Спасибо большое за ответ...   -  person RUski73    schedule 27.11.2013


Ответы (1)


Form1.figno1.Value и "Form1.figno1.Value" это совершенно разные вещи. Первое является свойством вложенного объекта, а второе — строкой. Если вы хотите изменить имя при доступе к вложенным объектам, вам нужно сделать это через коллекцию children, например так:

For i = 0 to max
  arr(i, 19) = Form1.children("figno" & i+1).Value
Next
person Ansgar Wiechers    schedule 25.11.2013
comment
ОК, @Ansgar, извини, но я говорил слишком рано. Работает только для первого цикла, т.е. когда я = 0. Также зависает, когда я добавляю еще один arr(i,20) = Form1.children("figname" & i+1).Value - person RUski73; 26.11.2013
comment
Я мало что могу с этим поделать, не видя вашего фактического кода и HTML, с которым он работает. - person Ansgar Wiechers; 26.11.2013
comment
Извините ... Возможно, вы перестарались с кодом. То, что началось как идея, стало животным - person RUski73; 26.11.2013