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会中断我的其余代码。。。