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