我是一个JavaScript新手,Private Sub node_AfterCheck(sender As Object, e As TreeViewEventArgs) Handles TreeView1.AfterCheck
If e.Action <> TreeViewAction.Unknown Then
Task.Factory.StartNew(Sub()
GetPolygons(e.Node)
End Sub, TaskCreationOptions.LongRunning)
End If
End Sub
Private Sub GetPolygons(node As TreeNode)
Dim objectId As String
Dim _polygon As GMapPolygon
For Each node1 As TreeNode In node.Nodes
objectId = node1.Name
For Each _polygon In polyOverlay.Polygons.AsParallel
itemTag = _polygon.Tag.ToString.Split("|")
If itemTag (0) = node1.Name Then
_polygon.IsVisible = node.Checked
Exit For
End If
Next
Next
End sub
让我感到困惑。我有一个这样的演示:
form.elements
&#13;
为什么这会返回3个元素而不是5个元素?我认为答案应该是5个元素(<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript">
function js() {
var myform = document.forms[0];
alert(myform.elements.length);
}
</script>
</head>
<body onload="js()">
<form>
<fieldset> this is a demo:
<p> this is a p element</p>
<label> this is a label element </label><br/>
<input type="text" value="abc"/>
<button type="button">click me</button>
</fieldset>
</form>
</body>
</html>
,fieldset
,p
,label
和input
),因为W3Schools表示&#34; button
返回表单中所有元素的集合&#34;,但浏览器告诉我只有3个元素。为什么呢?
答案 0 :(得分:3)
它不会返回p
和label
元素(或者您在那里的<br>
元素),因为它们不是列出表单元素(见下文)。
HTMLFormElement.elements
属性返回HTMLFormControlsCollection
元素中包含的所有表单控件的HTMLCollection
(HTML 4FORM
),但input
除外具有type
图像属性的元素。
HTMLFormElements.elements
返回的元素在HTML规范中称为listed elements的表单关联元素的子类别中进行集体化:
列出的元素
表示form.elements
和fieldset.elements
API中列出的元素。
button
,fieldset
,input
,keygen
,object
,output
,select
,textarea
答案 1 :(得分:1)
在您的代码中,只有以下是form elements
[fieldset, input, button]
这些是可能的表单元素的名称
<button>, <fieldset>, <input>, <output>, <progress>, <select>, <textarea>.
检查此fiddle
我已经放置了一个控制台日志来显示哪些表单元素
function js() {
var myform = document.forms[0];
console.log( myform.elements );
}
答案 2 :(得分:0)
这是因为p
和label
不是表单元素。我们有以下表单元素,如
答案 3 :(得分:0)
您的代码将3个元素显示为表单元素fieldset
(HTMLFieldSetElement),input
(HTMLInputElement)&amp; button
(HTMLButtonElement)。 label
和p
不会被视为表单元素。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript">
function js() {
var myform = document.forms[0];
alert.log(myform.elements.length);
for(var i=0;i<myform.elements.length;i++)
{
alert(myform.elements[i]);
}
}
</script>
</head>
<body onload="js()">
<form>
<fieldset> this is a demo:
<p> this is a p element</p>
<label> this is a label element </label><br/>
<input type="text" value="abc"/>
<button type="button">click me</button>
</fieldset>
</form>
</body>
</html>
答案 4 :(得分:0)
p
,label
元素不是表单元素,因此当您想要计算表单元素的数量时,它会3
顺便说一下,如果你想知道以下元素是一个表单元素:
<form> Defines an HTML form for user input
<input> Defines an input control
<textarea> Defines a multiline input control (text area)
<label> Defines a label for an <input> element
<fieldset> Groups related elements in a form
<legend> Defines a caption for a <fieldset> element
<select> Defines a drop-down list
<optgroup> Defines a group of related options in a drop-down list
<option> Defines an option in a drop-down list
<button> Defines a clickable button
<datalist> Specifies a list of pre-defined options for input controls
<keygen> Defines a key-pair generator field (for forms)
<output> Defines the result of a calculation