动态更新HTA(VBS)中的表行

时间:2015-11-17 08:55:03

标签: html vba vbscript hta

经过研究我可以看到,为了动态更新HTA中的表,我需要添加tbody元素。我还可以看到,然后我需要使用appendchild函数将必要的数据/行添加到表中。

我已经完成了这项工作,并尝试使用下面的代码遍历数组ArrLogs

Dim i
i = 1
Set table = document.getElementById("maintable") 
Set tbody = document.createElement("tbody") 
table.appendChild(tbody) 
Set trow = document.createElement("tr") 
Set tcol = document.createElement("td") 

ArrLogs = ReadLogs(computerasset.value)

Do Until i = UBound(ArrLogs)
       tcol.innerHTML = ArrLogs(i) 
       trow.appendChild(tcol) 
       tbody.appendChild(trow)
       table.appendChild(tbody)  
       i = i+1
Loop

我遇到的问题是,我只是看到我的数组的最后一个值附加到表中,几乎就像我错过了一个保存附加命令的命令,它就是&#39 ; s在运行时覆盖了行?

我很有意思,这不是很整齐,或者是循环数组的正确方法(应该使用for i = 1 to UBound(ArrLogs)等) - 我正在测试不同的做事方式,以防万一犯了一个明显的错误。

1 个答案:

答案 0 :(得分:3)

trow.appendChild(tcol)不会复制 tcol到该行;它会向其中插入一个引用,这意味着您只有一个 tcol,您经常会覆盖它,例如。下面的代码显示B不是A

Set p = document.createElement("p") 
p.innerHTML = "A"
document.body.appendChild(p)
p.innerHTML = "B" 

要修复此问题,请在循环中创建新元素:

Dim i: i = 0

Set tbody = document.createElement("tbody") 

ArrLogs = ReadLogs(computerasset.value)

for i = lbound(ArrLogs) to ubound(ArrLogs)
    Set trow = document.createElement("tr") 
    Set tcol = document.createElement("td") 

    tcol.innerHTML = ArrLogs(i) 
    trow.appendChild(tcol)
    tbody.appendChild(trow)
Next

document.getElementById("maintable").appendChild(tbody)