我正在尝试从表行和表格单元格中推送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
它出了什么问题?当我能够在列表中推送输出时,它无法正常工作。
修改 我正在使用此代码按预期打印输出但未填充表。
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
答案 0 :(得分:1)
您的代码中有两个问题:
node
不是集合,因此For Each element In node
失败。你的HTA中可能有On Error Resume Next
elswhere隐藏了这个错误,因为否则你会看到这样的错误信息:
Object不支持此属性或方法。
您需要先将表格行追加到<tbody>
元素(参见this related question)。
将您的代码更改为类似内容(并删除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
答案 1 :(得分: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
...
应该是
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
...