Html 访问复选框属性时出现问题(客户端vbscript)

Html 访问复选框属性时出现问题(客户端vbscript),html,vbscript,properties,checkbox,Html,Vbscript,Properties,Checkbox,我有一堆复选框,用户可以从他们想要加载的系统列表中进行选择。复选框的创建方式如下: '*************************************************************** ' Print systems from DB in a table for the load page. '*************************************************************** Function PrintSystemTabl

我有一堆复选框,用户可以从他们想要加载的系统列表中进行选择。复选框的创建方式如下:

'***************************************************************
' 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
'***************************************************************
'在加载页的表格中从DB打印系统。
'***************************************************************
函数PrintSystemTable()
Set con=CreateObject(“ADODB.Connection”)
con.Open“Provider=Microsoft.ACE.OLEDB.12.0;数据源=“&systemsDBPath
Set systemRs=CreateObject(“ADODB.Recordset”)
systemRs.CursorLocation=adUseClient
Set sensorRs=CreateObject(“ADODB.Recordset”)
sensorRs.CursorLocation=adUseClient
文件。写(“”)
文件。写(“”)
文件。写入(“选择”)
文件。写入(“系统名称”)
文件。书写(“说明”)
文件写入(“文件”)
文件。写(“”)
systemRs.打开“按系统名称从系统订单中选择*”_
con,adOpenStatic,adlock乐观
直到系统eof为止
文件。写(“”)
文件。写(“”)
文件。写(“”)
文件。写(“”)
文件。写(“”)
文件写入(系统名称)
文件。写(“”)
文件。写(“”)
文件编写(系统(“说明”))
文件。写(“”)
文件。写(“”)
文件写入(GUI路径和系统(“卫星”))
传感器。打开“从系统传感器中选择*,其中系统=”&系统(“系统名称”)和“”_
con,adOpenStatic,adlock乐观
直到传感器R.eof为止
文档。写入(“
”&guiPath&sensorRs(“传感器”)) 下一个传感器 环 传感器,关闭 文件。写(“”) “adoDBRecordset”(“字段名”)和“
”) 文件。写(“”) 系统移动下一步 环 文件。写(“”) 结案 端函数
它们不是一种形式。我试图通过它们的名称(系统)访问我的复选框,并对它们进行迭代以查看哪个复选框被选中

'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
“查找所选的系统
'访问所有复选框的数组?
模糊复选框
设置复选框=document.getElementsByName(“系统”)
'对于i=0到UBound(复选框)
对于复选框中的每个chk
'如果(复选框(i).checked=true),则
如果(chk.checked=true),则
document.write(“选中复选框
”) 其他的 文档。写入(“未选中的
”) 如果结束 'document.write(chk.value&“
”) 下一个
我尝试使用for和for-each循环进行迭代。不管怎样,我都会犯同样的错误。发生的情况如下:

现在我的数据库中有两个测试样本,所以我可以选择两件事。如果我选择第一个项目并按下运行checker脚本的按钮,它会打印“选中复选框”,我的页面上会出现一个错误(权限被拒绝),表示我无法访问checked属性。它不会打印“未选中”。如果我选择第二个项目,而第一个项目未选中,它将打印“未选中”,而不打印“复选框已选中”

如果我选择这两个项目,它会打印一次“复选框已选中”,并给出相同的错误

如果我没有选择任何一个项目,它会打印“未选中”一次(而不是每个未选中的项目打印一次),并且我会收到相同的权限被拒绝错误,告诉我无法访问“已选中”属性

在开始测试选中的值之前,我尝试打印每个复选框的值,但尝试访问value属性也会给我拒绝的权限

奇怪的是,它似乎在为第一个元素“工作”(因为它将只为一个元素打印适当的消息),即使它仍然抛出一个权限拒绝错误。这让我相信,要么我没有正确地使用document.getElementsByName()(它是否返回数组?),要么我没有正确地进行迭代。。。或者其他一些我无法理解的秘密

这是客户端vbscript,不是ASP。Javascript也不是一个选项;出于特定的原因,我将客户端vbscript与HTML结合使用。不要为我为什么使用它而烦恼,告诉我它很愚蠢,因为我同意;我别无选择

如何访问和遍历同名(系统)的复选框,并查看哪些复选框被选中并获取其值?

任何文档。加载页面后,write()将替换整个页面,这就是脚本仅查找第一个复选框而不查找其他复选框的原因

我对您的代码进行了如下修改,现在一切正常:

<SCRIPT LANGUAGE="VBScript"> 
<!--
Dim checkboxes 
Set checkboxes = document.getElementsByName("system") 

Set e = document.createElement("p")   'ADDED
document.body.appendChild e           'ADDED

' For i=0 to UBound(checkboxes) 
For Each chk in checkboxes 
'   If (checkboxes(i).checked = true) Then 
    If (chk.checked = true) Then 
        e.innerHtml = e.InnerHtml + "A checkbox is checked <br>"  'MODIFIED
    Else 
        e.innerHtml = e.InnerHtml + "Unchecked <br>"   'MODIFIED
    End If 
    'document.write(chk.value & "<br />")    
Next 
</SCRIPT>

页面加载后的任何document.write()都将替换整个页面,这就是脚本仅查找第一个复选框而不查找其他复选框的原因

我对您的代码进行了如下修改,现在一切正常:

<SCRIPT LANGUAGE="VBScript"> 
<!--
Dim checkboxes 
Set checkboxes = document.getElementsByName("system") 

Set e = document.createElement("p")   'ADDED
document.body.appendChild e           'ADDED

' For i=0 to UBound(checkboxes) 
For Each chk in checkboxes 
'   If (checkboxes(i).checked = true) Then 
    If (chk.checked = true) Then 
        e.innerHtml = e.InnerHtml + "A checkbox is checked <br>"  'MODIFIED
    Else 
        e.innerHtml = e.InnerHtml + "Unchecked <br>"   'MODIFIED
    End If 
    'document.write(chk.value & "<br />")    
Next 
</SCRIPT>


令人惊叹的!谢谢我甚至没有想到document.write会打断我其余的代码…太棒了!谢谢我甚至没有想到document.write会中断我的其余代码。。。