動態獲取VBScript(經典ASP)字典對象值時發生錯誤是的,它是一個漫長而複雜的標題......對不起。當For ... Each Loop
我正在用良好的時尚ASP在VBScript中工作。我有一個字典對象,字典中的每個對象都由它的Key和一個Array作爲Item組成。
Dim myDictionary
Set myDictionary = CreateObject("Scripting.Dictionary")
myDictionary.Add "a", Array("a1","a2")
myDictionary.Add "b", Array("b1","b2")
myDictionary.Add "c", Array("c1","c2")
我也傳遞到腳本字符串列表(並轉換到一個數組),即與各種字典條目對應,因此,只有那些條目可以在網頁上顯示,並在順序陣列。
Dim myText
myText = "a, b, c"
Dim myArray
myArray = Split(myText,",")
現在,我想遍歷數組,並顯示每個對應的鍵在myDictionary中的內容。
For Each thing in myArray
Response.Write myDictionary.Item(thing)(0) & " " & myDictionary.Item(thing)(1) & "<br />" & vbcrlf
Next
它在第一次迭代中完美工作,並正確地打印到頁面。但在第二次迭代中,我得到一個錯誤。下面是頁面上的全輸出:
A1 + A2
Microsoft VBScript運行時錯誤
'800a000d' 類型不匹配:項目(...)「
/高山/ EN_US /testCase.asp,line 28
任何人都知道爲什麼這不起作用?自然地,這裏顯示的代碼只是一個測試用例,但我的應用程序中存在完全相同的問題。
下面是完整的代碼,所以你可以只需將其切成正貼到您的測試環境中,如果它可以幫助你幫助我這一個:
<%@LANGUAGE="VBSCRIPT"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Iterating through Dictionary objects - Test Case</title>
</head>
<body>
<%
Dim myDictionary
Set myDictionary = CreateObject("Scripting.Dictionary")
myDictionary.Add "a", Array("a1","a2")
myDictionary.Add "b", Array("b1","b2")
myDictionary.Add "c", Array("c1","c2")
Dim myText
myText = "a, b, c"
Dim myArray
myArray = Split(myText,",")
For Each thing in myArray
Response.Write myDictionary.Item(thing)(0) & " " & myDictionary.Item(thing)(1) & "<br />" & vbcrlf
Next
%>
</body>
</html>
其他一些有趣的片段這個問題...
當我硬編碼的迭代中所有三個字典條目,它工作正常:
For Each thing in myArray
Response.Write myDictionary.Item("a")(0) & " " & myDictionary.Item("a")(1) & "<br />" & vbcrlf
Response.Write myDictionary.Item("b")(0) & " " & myDictionary.Item("b")(1) & "<br />" & vbcrlf
Response.Write myDictionary.Item("c")(0) & " " & myDictionary.Item("c")(1) & "<br />" & vbcrlf
Next
產生以下:
A1 + A2
B1,B2,
C1 C2
A1 A2
B1,B2,
C1 C2
A1 + A2
B1,B2,
C1 C2
,並驗證在for-each循環的 '東西' 變量工作:
For Each thing in myArray
Response.Write thing
Next
產生以下:
ABC
我很困惑...
謝謝大家!我非常感謝您提供的任何幫助。 :-)
乾杯,
Lelando
嗯,那樣做!由於我所有可能的關鍵術語都是單個單詞,並且我知道將創建逗號分隔列表的人將使用空格*不一致*,我想也必須先從列表中刪除所有空格。聽起來很對你? – Lelando 2010-12-08 00:50:10