2010-11-15 54 views
0

那些你精通JavaScript和PHP知道如何使用对象构造函数引用基本上就是相当于一个匿名关联数组是这样的:VBScript匿名关联数组? (如在Javascript)

myFunction({ 
    "param1" : "value1", 
    "param2" : "value2" 
}); 

的好处是不必命名每个您的目标功能的参数并且能够设置默认值。有谁知道如何在VBScript中类似地构建语句?我正在研究Dictionary类,但我不认为我会牢牢掌握如何在这里使用它,直到我看到一个例子。

谢谢,

回答

3

字典对象正是你在找什么。我已经成功地将它用于网站的多语言蒙皮。这并不难。

看到:http://www.devguru.com/technologies/vbscript/13992.asp

+0

嗨,谢谢。我已经查看了Dictionary对象,我可以看到将它用作关联数组的唯一方法是创建一个命名对象,并逐个添加我的参数作为值。这不是我想要做的,因为我试图避免一个命名变量,并希望能够将一个匿名数组作为参数。 – Dexter 2010-11-16 14:31:17

+0

你能给我一个简单的例子,上面的调用移植到VBScript使用Dictionary对象,所以我可以看到,如果我们看到它的方式相同?谢谢 – Dexter 2010-11-16 14:32:24

1

你是正确的,它不是很难使用。这只是一个用普通数组获得创意的问题。下面是我所做的:

<% 
    Function Img(aParamArray) 
     Dim oImageTag,aImageTagKeys, val, param, key, output 
     Set oImageTag = CreateObject("Scripting.Dictionary") 

     For Each param In aParamArray 
      val = Split(param, "::") 
      If Ubound(val) = 1 Then 
       oImageTag(val(0)) = val(1) 
      End If 
     Next 

     aImageTagKeys = oImageTag.Keys 
     Img = "<img " 
     For Each key in aImageTagKeys 
      If oImageTag(key) <> "" Then 
       Img = Img & key & "=""" & oImageTag(key) & """ " 
      End If 
     Next 

     If iDocType = 0 Or iDocType = 1 Or iDocType = 6 Then 
      Img = Img & ">" 
     Else 
      Img = Img & "/>" 
     End If 
    End Function 
%> 

--OR我可以设置支持attributes--

<% 
Function Img(aParamArray) 
    Dim oImageTag,aImageTagKeys, val, param, key, output 
    Set oImageTag = CreateObject("Scripting.Dictionary") 
    oImageTag("src") = "" 
    oImageTag("alt") = "" 
    oImageTag("class") = "" 
    oImageTag("id") = "" 
    oImageTag("width") = "" 
    oImageTag("height") = "" 
    oImageTag("usemap") = "" 
    oImageTag("title") = "" 
    oImageTag("style") = "" 
    oImageTag("dir") = "" 
    oImageTag("lang") = "" 
    oImageTag("ismap") = "" 
    oImageTag("onabort") = "" 
    oImageTag("onclick") = "" 
    oImageTag("ondblclick") = "" 
    oImageTag("onmousedown") = "" 
    oImageTag("onmouseout") = "" 
    oImageTag("onmouseover") = "" 
    oImageTag("onmouseup") = "" 
    oImageTag("onkeydown") = "" 
    oImageTag("onkeypress") = "" 
    oImageTag("onkeyup") = "" 

    For Each param In aParamArray 
     val = Split(param, "::") 
     If Ubound(val) = 1 Then 
      If oImageTag.Exists(val(0)) Then 
       oImageTag(val(0)) = val(1) 
      End If 
     End If 
    Next 

    aImageTagKeys = oImageTag.Keys 
    Img = "<img " 
    For Each key in aImageTagKeys 
     If oImageTag(key) <> "" Then 
      Img = Img & key & "=""" & oImageTag(key) & """ " 
     End If 
    Next 

    If iDocType = 0 Or iDocType = 1 Or iDocType = 6 Then 
     Img = Img & ">" 
    Else 
     Img = Img & "/>" 
    End If 
End Function 
%> 

默认值,仅输出,并调用它是这样的:

<% =Img(Array(_ 
       "src::http://www.domain.com/img.jpg",_ 
       "alt::Some alt text",_ 
       "width::30",_ 
       "height::30",_ 
       "class::noborder"_ 
)) %> 

现在,我可以轻松地控制图像标签的输出,无论doctype如何,并且从SQL服务器输出图像将更加容易,因为我可以将伪关联数组从正常索引的数组中取出。

要想清楚这一点不是为了制作图像标签,而是实际上是基于来自SQL服务器的多个因素和数据构建数据和表单的整个视图,但我需要简化它以找出它。现在它工作完美。

感谢您的建议!