动态地创建元素和事件

除了在页面设计器中布置页面元素外,可以从代码中创建HTML元素并将它们插入到页面。如果要在响应用户的操作中创建一个页面可能需要这样做。例如,可以在一个查询的响应中动态地创建一个页面和它的内容。通过使用DHTML对象模型的insertAdjacentHTML方法在代码中编写HTML,创建和插入一个HTML元素。

示例:获取客户信息

假设正在创建一个应用程序,在该程序中一个搜索按钮启动一个数据库查询来返回一个客户的姓和定单号。想动态地创建页面元素来包含查询结果。

在这个例子中,代码必须做的第一件事情是从页面的两个文本字段中获取用户的搜索条件。用户要搜索这些字段的IDs,对姓是“custLN”、对定单号是“orderNO”。在这种情况下,可以使用两个变量从这些字段中获取搜索条件:

Private Function cmdSearch_onclick() As Boolean
Dim sLastName As String
Dim sOrderNum As String
Dim divCustInfo as HTMLDivElement
'获取搜索条件并保存在变量中
SLastName = Me.custLN.Value
SorderNum = Me.orderNO.Value
End Function

示例:创建元素和替换内容

从查询页面中获取值之后,通过在一个结果页面上创建和置入一个DIV标记,将执行该查询并发送结果到用户。在这个过程中需要执行一系列的步骤:

  1. 从一个数据库中获取查询结果。

  2. 检查确信包含结果的DIV 已经不存在。如果查询以前已被运行过,DIV标记可能已经在页面中存在。如果该查询以前没有被运行过,必须在代码中创建DIV标记。

  3. 如果必要的话,创建DIV标记和其它必需的元素。

  4. 插入结果集到结果页面的DIV标记中。

下面的代码显示了将如何检查DIV标记作为前面部分开始的函数的一部分。

Private Function cmdSearch_onclick() As Boolean
'这里的代码是声明变量和获取搜索条件

'检查一个称为“CustinfoDIV标记。
Set divCustInfo = Me.Document.All("custinfo")

'如果没有DIV标记则创建三组HTML元素:
'查找:一个分隔符行、一个带有文本的DIV、和一个包含查询结果的可编程
'DIVIf divCustInfo Is Nothing Then
Me.Document.body.insertAdjacentHTML "BeforeEnd", _
  "<DIV><HR SIZE=2></DIV>"
Me.Document.body.insertAdjacentHTML "BeforeEnd", _
  "<DIV CLASS=custhead>Customer Information</DIV>
Me.Document.body.insertAdjacentHTML "BeforeEnd", _
  "<DIV id=custinfo>"

'使用一个CustomerQuery函数运行该查询并插入结果到
'CustinfoDIV标记中。
If sLastName <> "" Then
Me.Document.body.insertAdjacentHTML "BeforeEnd", _
  CustomerQuery(sLastName)
EndIf

'对可编程DIV元素创建和插入
'关闭标记。
Me.Document.body.insertAdjacentHTML "BeforeEnd", "</DIV>"

'如果DIV标记已经存在,运行CustomerQuery函数并用查询结果
'替换该元素。
Else
DivCustInfo.innerHTML = CustomerQuery(sLastName)
EndIf
End Function