VBScript: использование переменной в элементе DOM

Я хочу использовать переменную 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 проходит через все текстовые входы с идентификатором order + x (то есть order0, order1, order2, order3, order4 и т. д. До num).

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

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
9 915
4

Ответы 4

Я могу только предположить, что это 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)

Да, это клиентский VBScript. Что касается предложения, я подтвердил, что элементы есть в документе. Я не уверен, что objFile.writeLine ("order" & x) будет делать то, что мне нужно. Кажется, что это просто напечатает «order0», затем «order1», а не x-е значение в массиве «order».

Chris 25.09.2008 22:19

Вы правы, это просто поможет отладить проблему. Убедитесь, что вы действительно просматриваете все элементы в документе. Вы проверили, что возвращает document.myform.i.value?

Dan Williams 25.09.2008 22:36

document.myform.i.value возвращает 0 objFile.writeLine ("order" & x) работал должным образом. В то время на моей странице было 5 элементов с идентификаторами, начинающимися с Order, и он вернул: order0 order1 order2 order3 order4 Значит, это должно иметь какое-то отношение к использованию переменной в ссылке на DOM, не так ли?

Chris 25.09.2008 22:45

Также я должен упомянуть, что document.myform.i.value НАЧИНАЕТСЯ с 0. Чтобы получить order0 - order4 выше, i.value было изменено на 5. Так что это зависит от того, когда запускается функция VBScript.

Chris 25.09.2008 22:47

Это определенно имеет смысл, но это все еще не работает, я все еще получаю ошибки Object Expected при запуске функции. Есть ли другие способы ссылаться на DOM, где будет принята переменная?

Chris 25.09.2008 23:19

Похоже, вы смешиваете клиентский и серверный код.

objFile.writeLine(orders(x))

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

document.getElementById

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

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

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

<% = myVariable %>

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

document.write myVariable

Что ж, вот в чем дело: приложение, которое я создаю, предназначено для моего личного использования. Он не находится на «сервере», а скорее находится на моем локальном жестком диске. В результате работают как objFile.writeLine (orders (x)), так и document.getElementById. Это просто не распознавание использования переменной в идентификаторе.

Chris 26.09.2008 15:10

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

Вместо того, чтобы использовать

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

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

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

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

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

For x = 0 To num - 1

НАПРИМЕР. С 4 элементами вам нужно перебрать от 0 до 3.

Другие вопросы по теме