修改后的代码。
错误讯息:Object required:'document.getElementsByName(...)(...)'
行:59
焦炭:13
错误代码:if document.getElementsByName("chk" & arrName(ii))(0).Checked then
<SCRIPT language="VBScript">
Dim arrName(),arrExe()
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objFile = objFS.OpenTextFile("software/software.txt")
strSoftware = objFile.ReadAll
objFile.Close
arrSplit = Split(strSoftware, vbNewLine)
i = 0
For Each strLine in arrSplit
ReDim Preserve arrName(i + 1)
ReDim Preserve arrExe(i + 1)
arrName(i) = TRIM(Left(strLine,InStr(strLine,";")-1))
arrExe(i) = TRIM(Right(strLine,InStr(strLine,";")))
strHTML = CheckboxArea.InnerHTML
strHTML = strHTML & "<BR><INPUT TYPE='CHECKBOX' VALUE='" & arrName(i) & "' NAME ='chk'" & arrName(i) & " />" & arrName(i)
CheckboxArea.InnerHTML = strHTML
i = i + 1
Next
Sub Confirm
Dim objForm, Element
set objForm=document.forms("SoftwareSelect")
set Element=objForm.elements
i=0
ii=0
for i=0 to Element.length
if Element(i).type="checkbox" then
if document.getElementsByName("chk" & arrName(ii))(0).Checked then
MsgBox(arrName(ii) & " is checked.")
end if
ii = ii + 1
end if
next
End Sub
</SCRIPT>
答案 0 :(得分:0)
您的代码无法使用。你说arrName是一个字符串数组。字符串不是复选框对象。解决方案非常接近。
只需看一下代码行。这应该有用,不应该吗?
if Element(i).type="checkbox" then
ii = ii + 1
if "chk" & Element(i).Checked then
MsgBox(arrName(ii) & " is checked.")
end if
end if
答案 1 :(得分:0)
这样的表达式:
"chk" & arrName(ii).Checked
在将该值连接到字符串Checked
之前,将首先尝试获取存储在数组ii
的字段arrName
中的对象的"chk"
属性的值。你真正想做的是获取名为"chk" & arrName(ii)
的元素,然后获取该元素的Checked
属性的值。试试这个:
If document.getElementsByName("chk" & arrName(ii))(0).Checked Then
...
"chk" & arrName(ii)
是标识您要获取的元素的name
属性的值。document.getElementsByName(...)
返回name
属性具有该值的所有元素的集合。...(0).Checked
选择该集合中的第一个元素,并返回其Checked
属性的值。作为旁注:您可能希望使用id
属性而不是name
属性来标识页面中的元素,因为根据定义,该属性在页面中必须是唯一的。这样你就可以通过getElementById()
直接检索一个特定的元素,而不必先处理它从一个集合中掏出来。
编辑:如果您想迭代页面中的所有复选框,这样的内容可能更合适:
For Each tag In document.getElementsByTagName("input")
If LCase(tag.Type) = "checkbox" Then
'do stuff
End If
Next