对于每个...循环不起作用

Posted

技术标签:

【中文标题】对于每个...循环不起作用【英文标题】:For Each... Loop not working 【发布时间】:2016-03-01 18:46:35 【问题描述】:

我正在努力将 VBScript 脚本合并到我的 html 中。基本上我现在正在做的是在页面加载时出现一些输入框,要求用户输入存储在数组中的四种颜色。后来我使用我创建的函数在页面上显示颜色。当我为数组的每个单独元素调用它时,该函数的工作方式与预期的一样,但我的 For Each 循环没有做任何事情。

这是从用户那里收集颜色信息的代码:

Option Explicit
Dim colour(4)

colour(0) = Inputbox("Colour number 1")
Msgbox("The colour you entered is: " & colour(0))
colour(1) = Inputbox("Colour number 2")
Msgbox("The colour you entered is: " & colour(1))
colour(2) = Inputbox("Colour number 3")
Msgbox("The colour you entered is: " & colour(2))
colour(3) = Inputbox("Colour number 4")
Msgbox("The colour you entered is: " & colour(3))

这是我稍后调用以在页面上显示这些颜色的脚本,没有循环,这正是我想要的:

Function printText(words)
    document.write("<h3 class='bodyheader'>Let's add the text '" & words & _
        "' to our website</h3>")
End Function

printText(colour(0))
printText(colour(1))
printText(colour(2))
printText(colour(3))

当我实现我的For Each 循环时,我根本没有得到任何类型的输出,页面的那个区域仍然是空白的。我得到的错误是

非法赋值:'元素'

Function printText(words)
    document.write("<h3 class='bodyheader'>Let's add the text '" & words & _
        "' to our website</h3>")
End Function

For Each element In colour
    printText(colour(element))
Next

我在循环中的语法有问题还是我遗漏了另一个问题?

【问题讨论】:

当你使用 for each 时,你不会为你的数组使用下标,for each 你循环遍历数组的每个元素,并且你的情况下的“元素”变量是一个完整的对象跨度> 【参考方案1】:

只需使用:

For Each elm In colour
    printText(elm)
Next

或使用:

For i=0 To UBound(colour)
    printText(colour(i))
Next

【讨论】:

使用第一种方法我仍然收到“非法赋值:'元素'”错误,使用第二种方法我收到“需要对象:'颜色'”错误。知道为什么会这样吗?它允许我调用颜色来单独打印,所以使用循环会有所不同似乎很奇怪,除非我只是在这里遗漏了一些东西。 也许“元素”是 VBScript 中的保留字?我用“榆树”代替了它。立即尝试 至于另一个错误,你是在同一个文件中声明你的数组吗? 第一种方法在更改为“elm”后起作用。谢谢!至于第二种方法...数组仅在此代码上方几行声明。 您可能还需要声明“elm”:Dim elm

以上是关于对于每个...循环不起作用的主要内容,如果未能解决你的问题,请参考以下文章

更新记录集的嵌套循环不起作用 Access

对于下一个循环来计算运行总计将不起作用

带有把手“每个循环”的 Mandrill API 不起作用

为啥 ViewPager 无限循环不起作用?

为啥这种 for 循环并行化在 Python 中不起作用?

为啥 sc.next() 或 sc.nextLine() 在循环中不起作用?