正在生成 table

Generating table

我正在尝试从 table 行和 table 单元格中的 VBScript 代码推送我的输出。

我的代码是:

Set table = document.CreateElement("table") 
i = 0
For Each node In objMSXML.selectNodes(sXPath)
    Set tr = document.createElement("tr")
    Set td = document.createElement("td")
    For Each element In node
        td.innerText = element.parentNode.nodeName & "->" & element.text
        tr.appendChild td
    Next
    table.appendChild tr
    ObjOutFile.WriteLine node.parentNode.nodeName & "->" & node.text
    i = i + 1
Next
document.body.appendChild table

有什么问题吗?当我能够在列表中推送输出时它不起作用。

编辑 我正在使用此代码,它按预期打印输出,但未填充 table。

ObjOutFile.WriteLine thing.path
document.body.appendChild p
Set tbody = document.createElement("tbody") 
For Each node In objMSXML.selectNodes(sXPath)
    Set trow = document.createElement("tr")
    Set tcol = document.createElement("td")
    tcol.innerText = tcol.innerText & node.parentNode.nodeName & "->" & node.text
    ObjOutFile.WriteLine node.parentNode.nodeName & "->" & node.text
    trow.appendChild(tcol)
    tbody.appendChild(trow)
    'ObjOutFile.WriteLine node.parentNode.nodeName & "->" & node.text
Next
document.appendChild(tbody)

ObjOutFile.writeLine 打印如下:

C:\Users\abc\Desktop\samp.txt
hamster->AbcPos
hamster->Database Layer
hairyStyle->qskxyz
hairyGirl->qixyz
hairyGirl->abc
hairyGirl->def

您希望当前节点的每个节点对应一行,每个元素对应一列。所以

For Each node In objMSXML.selectNodes(sXPath)
    Set tr = document.createElement("tr")
    Set td = document.createElement("td")
    For Each element In node
        td.innerText = element.parentNode.nodeName & "->" & element.text
        ...

应该是

For Each node In objMSXML.selectNodes(sXPath)
    Set tr = document.createElement("tr")
    For Each element In node
        Set td = document.createElement("td")
        td.innerText = element.parentNode.nodeName & "->" & element.text
        ...

您的代码中有两个问题:

  • node 不是集合,因此 For Each element In node 失败。您的 HTA 中可能有一个 On Error Resume Next 其他地方隐藏了此错误,否则您会看到这样的错误消息:

    Object doesn't support this property or method.

  • 您需要先将 table 行附加到 <tbody> 元素(参见 )。

将您的代码更改为类似这样的内容(并删除 On Error Resume Next):

Set table = document.createElement("table")
Set tbody = document.createElement("tbody")
i = 0
For Each node In objMSXML.selectNodes(sXPath)
    Set tr = document.createElement("tr")
    Set td = document.createElement("td")
    td.innerText = node.parentNode.nodeName & "->" & node.text
    tr.appendChild td
    tbody.appendChild tr
    i = i + 1
Next
table.appendChild tbody
document.body.appendChild table