<body>
<table width="100%" height="372"  border="0" cellpadding="0" cellspacing="0">
  <tr>
    <td id="TABLEID"> </td>
  </tr>
</table><XML id="XMLRESULT">
<?xml version="1.0" encoding="GB2312"?>
<Mydata>
 <结果>
  <客户号>10042</客户号>
  <账号>13849956</账号>
  <户名>福建省福州市鼓楼区XX公司</户名>
  <名称>dddd</名称>
 </结果>
</Mydata>
</XML><input type="button" value="ok" onclick="mm()"/>
<SCRIPT LANGUAGE="JavaScript">
<!--
function mm()
{
  var x = document.all.XMLRESULT.XMLDocument;
  x.setProperty("SelectionLanguage", "XPath");
  var node = x.selectSingleNode("/Mydata/结果");  var s = "<table border='1' cellpadding='0' cellspacing='0' id='tblresult' datasrc='#XMLRESULT'>";
  if(node)
  {
    var a = [];
    for(var i=0; i<node.childNodes.length; i++)
    {
        if(node.childNodes[i].nodeType==1) a[a.length] = node.childNodes[i].nodeName;
    }
    if(a.length>0)
    {
        s += "<tr>";
        for(var i=0; i<a.length; i++) s += "<td>"+ a[i] +"</td>";
        s += "</tr>";        s += "<tr>";
        for(var i=0; i<a.length; i++) s += "<td><div datafld='"+ a[i] +"'></div></td>";
        s += "</tr>";
    }
  }
  s += "</table>";
  document.all.TABLEID.innerHTML = s;
}
//-->
</SCRIPT>

解决方案 »

  1.   

    先谢谢梅花雪
    这种用INNERHTML的模式我可以用,现在问题是我想使用纯对象模式去做,因为有可能出现在设定表格后对某一列的DATAFLD进行修改的情况。这种情况下用INNERHTML就不行了,所以想一开始就用对象模式动态的设定DATAFLD
      

  2.   

    也就是说,我需要的是SPAN对象设置DATAFLD的时候怎么个设置法。而不是想要INNERHTML这种绕过去的办法。
      

  3.   

    你觉得的其中”mySpan.Datafld = myRec.Fields(i).value”这句是有些问题,
    用下面两句替代:mySpan.datasrc = "#XMLRESULT"
    mySpan.Datafld = cstr(myRec.Fields(i).name)(具体的参考msdn中<span> datasrc 和 datafld 属性设置)
      

  4.   

    licry01(龙)兄的做法我也试过。
    但不能实现要求。
    具体是这样的。在只写mySpan.Datafld=cstr(myRec.Fields(i).name)这句的时候,不起任何作用。
    在添加了mySpan.datasrc = "#XMLRESULT"这句的时候,实际上是给SPAN另外设置了datasrc,这时候mySpan虽然起作用了,但不是承继至table的datasrc。这样表格就只会显示数据岛的一条记录,而不会有多少记录表格就显示多少条了。
      

  5.   

    与用不用 innerHTML 有什么关系??在DOM操作里用 innerHTML 的效率要高于 createElement 所以我给出 innerHTML 的例子,你自己喜欢用 createElement 你自己用好了。<html>
    <body><table width="100%" height="372"  border="0" cellpadding="0" cellspacing="0">
      <tr>
        <td id="TABLEID"> </td>
      </tr>
    </table><XML id="XMLRESULT">
    <?xml version="1.0" encoding="GB2312"?>
    <Mydata>
     <结果>
      <客户号>10042</客户号>
      <账号>13849956</账号>
      <户名>福建省福州市鼓楼区XX公司</户名>
      <名称>dddd</名称>
     </结果>
    </Mydata>
    </XML><input type="button" value="old" onclick="mm()"/>
    <input type="button" value="new" onclick="mm2()"/>
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    function mm()
    {
      var x = document.all.XMLRESULT.XMLDocument;
      x.setProperty("SelectionLanguage", "XPath");
      var node = x.selectSingleNode("/Mydata/结果");  var s = "<table border='1' cellpadding='0' cellspacing='0' id='tblresult' datasrc='#XMLRESULT'>";
      if(node)
      {
        var a = [];
        for(var i=0; i<node.childNodes.length; i++)
        {
            if(node.childNodes[i].nodeType==1) a[a.length] = node.childNodes[i].nodeName;
        }
        if(a.length>0)
        {
            s += "<tr>";
            for(var i=0; i<a.length; i++) s += "<td>"+ a[i] +"</td>";
            s += "</tr>";        s += "<tr>";
            for(var i=0; i<a.length; i++) s += "<td><div datafld='"+ a[i] +"'></div></td>";
            s += "</tr>";
        }
      }
      s += "</table>";
      document.all.TABLEID.innerHTML = s;
    }function mm2()
    {  var x = document.all.XMLRESULT.XMLDocument;
      x.setProperty("SelectionLanguage", "XPath");
      var node = x.selectSingleNode("/Mydata/结果");  var tab = document.createElement("TABLE");
      with(tab)
      {
        border = "1";
        cellPadding=0;
        cellSpacing=0;
        id="tblresult";
      }
      document.all.TABLEID.appendChild(tab);
      if(node)
      {
        var a = [];
        for(var i=0; i<node.childNodes.length; i++)
        {
            if(node.childNodes[i].nodeType==1) a[a.length] = node.childNodes[i].nodeName;
        }
        if(a.length>0)
        {
            var tr = tab.insertRow(tab.rows.length);
            for(var i=0; i<a.length; i++)
            {
                var td = tr.insertCell(tr.cells.length);
                td.innerHTML = a[i];
            }        var tr = tab.insertRow(tab.rows.length);
            for(var i=0; i<a.length; i++)
            {
                var td = tr.insertCell(tr.cells.length);
                var div = document.createElement("DIV");
                div.dataFld = a[i];
                td.appendChild(div);
            }        tab.dataSrc='#XMLRESULT';
        }
      }
    }
    //-->
    </SCRIPT>
    </body></html>
      

  6.   

    我找到你的问题了,下面是你写的script输出的HTMl码:<TABLE id=tblresult dataSrc=#XMLRESULT cellSpacing=0 cellPadding=0 dataPageSize=21 border=0><THEAD id=myTH><!--remove from script!--><TR id=MYThTr1>
    <TD id=MyThTr1Td bgColor=#000000 colSpan=7 height=2></TD></TR>
    <TR id=MYThTr2 bgColor=#ffffff height=18>
    <TD id=MyThTr2Td1>客户号</TD>
    <TD id=MyThTr2Td5 width=1 bgColor=#000000></TD>
    <TD id=MyThTr2Td2>账号</TD>
    <TD id=MyThTr2Td6 width=1 bgColor=#000000></TD>
    <TD id=MyThTr2Td3>户名</TD>
    <TD id=MyThTr2Td7 width=1 bgColor=#000000></TD>
    <TD id=MyThTr2Td4>名称</TD></TR>
    <TR id=MYThTr3>
    <TD id=MyThTr3Td bgColor=#000000 colSpan=7 height=1></TD></TR>
    <TR id=MYTbTr1 height=18>
    <TD id=MyTbTr1Td1><SPAN dataFld=客户号></SPAN></TD>
    <TD id=MyTbTr1Td5 width=1 bgColor=#000000></TD>
    <TD id=MyTbTr1Td2><SPAN dataFld=账号></SPAN></TD>
    <TD id=MyTbTr1Td6 width=1 bgColor=#000000></TD>
    <TD id=MyTbTr1Td3><SPAN dataFld=户名></SPAN></TD>
    <TD id=MyTbTr1Td7 width=1 bgColor=#000000></TD>
    <TD id=MyTbTr1Td4><SPAN dataFld=名称></SPAN></TD></TR></THEAD><!--remove from script!--><TBODY id=myTB></TBODY>
    <TFOOT id=myTF>
    <TR id=MYTfTr1>
    <TD id=MyTfTr1Td bgColor=#000000 colSpan=7 height=2></TD></TR></TFOOT></TABLE>datafld不能继承datasrc,是因为你的table和tr、td之间多了个<THEAD id=myTH>这个东东,正确的应该是<table datasrc=".."><tr><td datafld="..">
    我把table与tr、td间的这个<HHEAD>去掉后就没问题了,对了,别忘了把“mySpan.Datafld = myRec.Fields(i).value”改成 mySpan.Datafld = cstr(myRec.Fields(i).name)。
      

  7.   

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>无标题文档</title>
    <script language="vbscript">
        Private sub mytest()
           set myaa = document.all("TABLEID")
        set myTable = document.createElement("TABLE")
        with myTable
            .border = "0" 
           .cellpadding = "0" 
           .cellspacing = "0" 
           .id = "tblresult"  
           .datasrc = "#XMLRESULT"
           .DATAPAGESIZE = "21"
        end with
        myaa.appendChild(myTable)
        
        set myTHead = document.CreateElement("tHead")
        myTHead.id = "myTH"
        myTable.appendChild(myTHead)
        
        set myXML = document.all("XMLRESULT")
        Set myRec = myXML.RecordSet
           myRec.MoveFirst
        myColCu = (myRec.Fields.Count-1)*2-1
           
        set myTr = document.CreateElement("Tr")
           myTr.Id = "MYThTr1"
        myTHead.appendChild(myTr)
        
        set myTd = document.CreateElement("Td")
        with myTd
            .Id = "MyThTr1Td"
            .bgColor = "#000000"
         .height = "2"
         .colspan = myColCu
        end with
        myTr.appendChild(MyTd)
        
        set myTr = document.CreateElement("Tr")
        with myTr
            .bgColor = "#ffffff"
            .Id = "MYThTr2"
            .height = "18"
        end with
        myTHead.appendChild(myTr)
        
        for i=0 to myRec.Fields.Count-2
           set myTd = document.CreateElement("Td")
              with myTd
               .Id = "MyThTr2Td"&cStr(i+1)
           end with
        set myText = document.CreateTextNode(myRec.Fields(i).name)
        myTd.appendChild(myText)
           myTr.appendChild(MyTd)
        if i <> myRec.Fields.Count-2 then
            set myTd = document.CreateElement("Td")
            with myTd
                  .Id = "MyThTr2Td"&cStr(i+1+myRec.Fields.Count-1)
                  .bgColor = "#000000"
         .width = "1"
                  end with
         myTr.appendChild(MyTd)
        end if
        next
        
        set myTr = document.CreateElement("Tr")
           myTr.Id = "MYThTr3"
        myTHead.appendChild(myTr)
        
        set myTd = document.CreateElement("Td")
        with myTd
            .Id = "MyThTr3Td"
            .bgColor = "#000000"
         .height = "1"
         .colspan = myColCu
        end with
        myTr.appendChild(MyTd)
      
          set myTBody = document.CreateElement("tBody")
        myTBody.id = "myTB"
        myTable.appendChild(myTBody)       set myTr = document.CreateElement("Tr")
        with myTr
            .Id = "MYTbTr1"
            .height = "18"
        end with
    ' msgbox myTBody.innerHTML
        
        for i=0 to myRec.Fields.Count-2
           set myTd = document.CreateElement("Td")
              with myTd
               .Id = "MyTbTr1Td"&cStr(i+1)
           end with
        
    set mySpan = document.CreateElement("SPAN")
        mySpan.Datafld = myRec.Fields(i).name
    ' if i=1 then
    ' mySpan.Datafld = "客户号"
    ' end if
    ' if i=2 then
    ' mySpan.Datafld = "账号"
    ' end if
    ' if i=3 then
    ' mySpan.Datafld = "户名"
    ' end if 'msgbox myRec.Properties(i)
    myTd.appendChild(mySpan)
       myTr.appendChild(MyTd)
    ' msgbox myTr.innerHTML if i <> myRec.Fields.Count-2 then
    set myTd = document.CreateElement("Td")
    with myTd
      .Id = "MyTbTr1Td"&cStr(i+1+myRec.Fields.Count-1)
      .bgColor = "#000000"
     .width = "1"
     end with
     myTr.appendChild(myTd)
     'msgbox myTr.innerHTML
    end if
        next
        myTBody.appendChild(myTr)
    msgbox myTBody.innerHTML
    'myTBody.appendChild(myTr)
    'msgbox   myTr.innerHTML    set myTFoot = document.CreateElement("tFoot")
        myTFoot.id = "myTF"
        myTable.appendChild(myTFoot)       set myTr = document.CreateElement("Tr")
        with myTr
            .Id = "MYTfTr1"
        end with
        myTFoot.appendChild(myTr)
        
        set myTd = document.CreateElement("Td")
        with myTd
            .Id = "MyTfTr1Td"
            .bgColor = "#000000"
         .height = "2"
         .colspan = myColCu
        end with
        myTr.appendChild(MyTd)
        
    msgbox document.all("TABLEID").innerHTML
        myTable.refresh() end sub
    </script>
    </head><body>
    <table width="100%" height="372"  border="0" cellpadding="0" cellspacing="0">
      <tr>
        <td id="TABLEID"> </td>
      </tr>
    </table><form name="form1" method="post" action="">
      <input type="button" name="Submit" value="按钮" onclick="mytest()">
    </form>
    </body>
    </html><XML id="XMLRESULT">
    <?xml version="1.0" encoding="GB2312"?>
    <Mydata>
     <结果>
      <客户号>10042</客户号>
      <账号>13849956</账号>
      <户名>福建省福州市鼓楼区XX公司</户名>
            <名称>dddd</名称>
     </结果>
    </Mydata>
    </XML>
      

  8.   

    刚才我测试了一下我的那段代码,在有多个字段的时候会有点BUG,改正之:<html>
    <body><table width="100%" height="372"  border="0" cellpadding="0" cellspacing="0">
      <tr>
        <td id="TABLEID"> </td>
      </tr>
    </table><XML id="XMLRESULT">
    <?xml version="1.0" encoding="GB2312"?>
    <Mydata>
     <结果>
      <客户号>10042</客户号>
      <账号>13849956</账号>
      <户名>福建省福州市鼓楼区XX公司</户名>
      <名称>dddd</名称>
     </结果>
     <结果>
      <客户号>10042</客户号>
      <账号>13849956</账号>
      <户名>福建省福州市鼓楼区XX公司</户名>
      <名称>dddd</名称>
     </结果>
     <结果>
      <客户号>10042</客户号>
      <账号>13849956</账号>
      <户名>福建省福州市鼓楼区XX公司</户名>
      <名称>dddd</名称>
     </结果>
    </Mydata>
    </XML><input type="button" value="OK" onclick="mm()"/><SCRIPT LANGUAGE="JavaScript">
    <!--
    function mm()
    {  var x = document.all.XMLRESULT.XMLDocument;
      x.setProperty("SelectionLanguage", "XPath");
      var node = x.selectSingleNode("/Mydata/结果");  var tab = document.createElement("TABLE");
      with(tab)
      {
        border = "1";
        cellPadding=0;
        cellSpacing=0;
        id="tblresult";
      }
      var head = document.createElement("THEAD");
      tab.appendChild(head);
      document.all.TABLEID.appendChild(tab);
      if(node)
      {
        var a = [];
        for(var i=0; i<node.childNodes.length; i++)
        {
            if(node.childNodes[i].nodeType==1) a[a.length] = node.childNodes[i].nodeName;
        }
        if(a.length>0)
        {
            var tr = head.insertRow(tab.rows.length);
            for(var i=0; i<a.length; i++)
            {
                var td = tr.insertCell(tr.cells.length);
                td.innerHTML = a[i];
            }        var tr = tab.insertRow(tab.rows.length);
            for(var i=0; i<a.length; i++)
            {
                var td = tr.insertCell(tr.cells.length);
                var div = document.createElement("DIV");
                div.dataFld = a[i];
                td.appendChild(div);
            }        tab.dataSrc='#XMLRESULT';
        }
      }
    }
    //-->
    </SCRIPT>
    </body></html>
      

  9.   

    OK了,看来是我把BODY的部分插到HEAD里去了。还有梅花雪最后大恩爱段代码已经很完整了。谢谢大家!!!
      

  10.   

    因为在VBS那边结贴的时候把分都给梅花雪了,这边就不给了哈。