【问题标题】:VBScript: Using a variable within a DOM elementVBScript:在 DOM 元素中使用变量
【发布时间】:2010-09-13 04:32:01
【问题描述】:

我希望在对我正在构建的 Web 应用程序的 DOM 元素的引用中使用 VBScript 变量。以下是受影响代码区域的简短摘录:

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 循环遍历 ID 为 order+x 的所有文本输入(即 order0、order1、order2、order3、order4 等,直到 num)

我的 orders(x) 行似乎有问题,我认为它无法识别我所说的 getElementById("order" & x) 的意思,而且我不确定该怎么做。有人有什么建议吗?将不胜感激!

【问题讨论】:

    标签: javascript html vbscript


    【解决方案1】:

    我能够得到这个工作。感谢你们俩的时间和投入。这是为我解决的问题:

    而不是使用

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

    我将整个ID设置为变量:

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

    它似乎按预期工作。再次感谢您为此付出的时间和精力!

    【讨论】:

      【解决方案2】:

      我只能假设这是客户端 VBScript,因为 document.getElementById() 无法从服务器访问。

      尝试 objFile.writeLine("order" & x),然后检查源以确保所有元素都在文档中。

      [因为我无法将代码放入 cmets...] 这很奇怪。在我看来,一切都应该正常工作。

      我唯一能想到的就是:改变

      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”,而不是“order”数组中的第 x 个值。
      • 你是对的,它只是为了帮助调试问题。确保您实际上正在浏览文档中的所有元素。您是否测试过返回的 document.myform.i.value 是什么?
      • document.myform.i.value 返回 0 objFile.writeLine("order" & x) 按预期工作。当时我的页面上有 5 个 ID 以 Order 开头的元素,它返回: order0 order1 order2 order3 order4 所以它一定与在 DOM 引用中使用变量有关,不是吗?
      • 另外,我应该提到 document.myform.i.value 从 0 开始。为了得到上面的 order0 - order4,i.value 被更改为 5。所以这取决于 VBScript 函数的时间运行。
      • 这绝对是有道理的,但它仍然不起作用,当函数运行时,我仍然收到 Object Expected 错误。还有其他方法可以引用接受变量的 DOM 吗?
      【解决方案3】:

      看起来好像你在混合客户端和服务器端代码。

      objFile.writeLine(orders(x))
      

      即VBScript写入文件,只能在服务器端进行。

      document.getElementById
      

      这是通常在 JavaScript 中执行的客户端大小的代码。您可以在客户端的 IE 上使用 VBScript,但很少有人这样做。

      在服务器上,您通常使用 request("formFieldName") 来引用作为表单标签一部分的表单字段,而不是 DOM 元素(假设您使用的是经典 ASP)。

      为了让服务器端的东西出现在客户端(当你构建一个页面时),你可以像这样将它嵌入到你的 HTML 中:

      <% = myVariable %>
      

      或像这样(作为代码块的一部分):

      document.write myVariable
      

      【讨论】:

      • 好吧,这就是交易:我正在创建的应用程序是供我个人使用的。它不是驻留在“服务器”上,而是位于我的本地硬盘上。结果, objFile.writeLine(orders(x)) 和 document.getElementById 都可以工作。它只是无法识别 ID 中变量的使用。
      【解决方案4】:

      你不需要稍微改变你的循环吗?

      For x = 0 To num - 1
      

      例如使用 4 个项目,您需要从 0 迭代到 3。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-06
        • 1970-01-01
        • 1970-01-01
        • 2012-03-23
        • 1970-01-01
        相关资源
        最近更新 更多