Sam*_*m H 5 html vbscript vba 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
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是我只看到我的数组的最后一个值附加到表中,几乎就像我错过了一个命令来保存追加并且它在运行时覆盖了行?
我很有意思,这不是很整洁,或者循环数组的正确方法(应该使用for i = 1 to UBound(ArrLogs)等) - 我正在测试不同的做事方式,以防我犯了一个明显的错误.
trow.appendChild(tcol)不复制 tcol到行;它会插入对它的引用,这意味着您只有一个 tcol不断覆盖的引用,例如下面的代码将显示 B 而不是 A
Set p = document.createElement("p")
p.innerHTML = "A"
document.body.appendChild(p)
p.innerHTML = "B"
Run Code Online (Sandbox Code Playgroud)
要解决此问题,请在循环内创建新元素:
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)
Run Code Online (Sandbox Code Playgroud)