VBScript: использование переменной в элементе DOM - PullRequest
1 голос
/ 25 сентября 2008

Я хочу использовать переменную VBScript в ссылке на элемент DOM для создаваемого веб-приложения. Вот краткая выдержка из затронутой области кода:

dim num
num = CInt(document.myform.i.value)
dim x
x = 0
dim orders(num)
For x = 0 To num
    orders(x) = document.getElementById("order" & x).value
    objFile.writeLine(orders(x))
Next

Это мое первое предприятие в VBScript, и я не смог найти какие-либо методы для выполнения этого типа действий в Интернете. Как вы можете видеть в приведенном выше коде, я пытаюсь создать массив (заказы). Этот массив может иметь любое количество значений, но это число будет указано в document.myform.i.value. Таким образом, цикл For циклически перебирает все текстовые вводы с идентификатором порядка + x (т. Е. Order0, order1, order2, order3, order4 и т. Д. Вплоть до числа)

Кажется, это проблема с моей строкой заказов (x), я не думаю, что она понимает, что я имею в виду под getElementById("order" & x), и я не совсем точно знаю, как это сделать. У кого-нибудь есть предложения? Это будет высоко ценится!

Ответы [ 4 ]

1 голос
/ 26 сентября 2008

Я смог заставить это работать. Спасибо вам обоим за ваше время и вклад. Вот что решило это для меня:

Вместо использования

document.getElementById("order" & x).value

Я установил весь идентификатор как переменную:

temp = "order" & x
document.getElementById(temp).value

Кажется, все работает как положено. Еще раз большое спасибо за потраченное время и усилия на это!

0 голосов
/ 16 октября 2008

Разве вам не нужно немного менять цикл?

For x = 0 To num - 1

например. С 4 предметами нужно перебирать от 0 до 3.

0 голосов
/ 26 сентября 2008

Выглядит так, как будто вы смешиваете клиентский и серверный код.

objFile.writeLine(orders(x))

Это VBScript для записи в файл, который вы можете делать только на сервере.

document.getElementById

Это код размера клиента, который обычно выполняется в JavaScript. Вы можете использовать VBScript на IE на клиенте, но редко кто-нибудь делает это.

На сервере вы обычно ссылаетесь на поля формы, которые были частью тега формы, а не на элементы DOM (если вы используете классический ASP), используя запрос ("formFieldName").

Чтобы серверные материалы появлялись на клиенте (при создании страницы), вы должны встроить их в свой HTML-код следующим образом:

<% = myVariable %>

или как это (как часть блока кода):

document.write myVariable
0 голосов
/ 25 сентября 2008

Я могу только предположить, что это VBScript на стороне клиента, так как document.getElementById () недоступен с сервера.

попробуйте objFile.writeLine ("order" & x), затем проверьте источник, чтобы убедиться, что все элементы находятся в документе.

[Поскольку я не могу поместить код в комментарии ...] Это странно. Мне кажется, все должно работать.

Единственное, о чем я могу думать: изменить

orders(x) = document.getElementById("order" & x).value
objFile.writeLine(orders(x))

до

orders(x) = document.getElementById("order" & x)
objFile.writeLine(orders(x).value)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...