我有一堆複選框,用戶可以從他們想要加載的系統列表中進行選擇。複選框的創建方式如下:無法訪問複選框屬性(客戶端VBScript)
'***************************************************************
' Print systems from DB in a table for the load page.
'***************************************************************
Function PrintSystemTable()
Set con = CreateObject("ADODB.Connection")
con.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & systemsDBPath
Set systemRs = CreateObject("ADODB.Recordset")
systemRs.CursorLocation = adUseClient
Set sensorRs = CreateObject("ADODB.Recordset")
sensorRs.CursorLocation = adUseClient
document.write("<table class=satelliteList>")
document.write("<tr class=""tableHeader"">")
document.write("<td>Select</td>")
document.write("<td width=""100"">System Name</td>")
document.write("<td width=""100"">Description</td>")
document.write("<td width=""75"">Files</td>")
document.write("</tr>")
systemRs.Open "SELECT * FROM System ORDER BY SystemName", _
con, adOpenStatic, adLockOptimistic
do until systemRs.eof
document.write("<tr valign=""top"">")
document.write("<td>")
document.write("<INPUT TYPE=CHECKBOX NAME=""system"" VALUE=""" & systemRs("SystemName") & """>")
document.write("</td>")
document.write("<td>")
document.write(systemRs("SystemName"))
document.write("</td>")
document.write("<td>")
document.write(systemRs("Description"))
document.write("</td>")
document.write("<td>")
document.write(guiPath & systemRs("Satellite"))
sensorRs.Open "SELECT * FROM SystemSensors WHERE System='" & systemRs("SystemName") & "'", _
con, adOpenStatic, adLockOptimistic
do until sensorRs.eof
document.write("<br>" & guiPath & sensorRs("Sensor"))
sensorRs.movenext
loop
sensorRs.Close
document.write("</td>")
'adoDBRecordset("FieldName") & "<br>")
document.write("</tr>")
systemRs.movenext
loop
document.write("</table>")
con.Close
End Function
它們不在表單中。我試圖通過他們的名字(系統)訪問我的複選框並遍歷它們以查看哪些被檢查。
'find the systems that are selected
'access an array of all the checkboxes?
Dim checkboxes
Set checkboxes = document.getElementsByName("system")
'For i=0 to UBound(checkboxes)
For Each chk in checkboxes
' If (checkboxes(i).checked = true) Then
If (chk.checked = true) Then
document.write("A checkbox is checked <br>")
Else
document.write("Unchecked <br>")
End If
'document.write(chk.value & "<br />")
Next
我已經嘗試迭代使用for和for each循環。無論哪種方式我都會得到同樣的錯誤這裏是發生了什麼:
現在我在我的數據庫中有兩個測試樣本,所以我得到兩件事我可以選擇。如果我選擇第一個項目並按下運行我的檢查腳本的按鈕,則會打印「檢查複選框」,並在我的頁面上顯示錯誤(權限被拒絕),表示我無法訪問檢查的屬性。它不打印「未選中」。如果我選擇我的第二個項目,不選中第一個項目,它會打印「未選中」,而不打印「已選中複選框」。
如果我選擇這兩個項目,它會打印「檢查複選框」一次,並給出相同的錯誤。
如果我不選擇任何一項打印「未檢查」ONCE(而不是每個未檢查項目一次),並且我得到相同的權限拒絕錯誤告訴我我無法訪問檢查的屬性。
在我開始測試選中的值之前,我嘗試打印每個複選框的值,但試圖訪問value屬性也給了我權限被拒絕。
奇怪的是,它似乎是「工作」的第一個元素(因爲它只會打印一個元素適當的消息),即使它仍然拋出權限被拒絕的錯誤。這導致我相信我要麼不正確地使用document.getElementsByName()(它是否返回一個數組?),要麼我沒有正確地迭代......或者其他一些超越我的神祕事物。
這是CLIENT-SIDE vbscript,不是ASP。 Javascript也不是一個選項;出於特定原因,我使用HTML的客戶端vbscript。不要因爲我使用它而告訴我這是愚蠢的,因爲我同意;我沒有選擇。
如何訪問和遍歷我的同名複選框(系統),並查看哪些被選中並獲取它們的值?
太棒了!謝謝!我甚至沒有想到document.write會中斷其餘的代碼... – Lauren 2010-07-23 13:30:49