Javascript 为什么要在我的HTML文件中创建新表而不是刷新同一个表?

Javascript 为什么要在我的HTML文件中创建新表而不是刷新同一个表?,javascript,html,xml,xpath,Javascript,Html,Xml,Xpath,我必须做什么才能在单击显示时刷新表?现在,只要单击display,就会在上一个表的下方创建一个新表 当页面第一次加载时,我希望显示整个表,即整个XML文件,它链接到输入字段下面的XSL文件。我该怎么做 在IE中,而不是在Firefox中,只要用户单击显示按钮,输入部分就会消失,只显示包含XML内容的表。如何让IE保留输入字段并在下面显示表格? 这是我的一段代码,包含了所有必要的部分。。。提前谢谢你 <html> ......... ...... <script type="te

我必须做什么才能在单击显示时刷新表?现在,只要单击display,就会在上一个表的下方创建一个新表

当页面第一次加载时,我希望显示整个表,即整个XML文件,它链接到输入字段下面的XSL文件。我该怎么做

在IE中,而不是在Firefox中,只要用户单击显示按钮,输入部分就会消失,只显示包含XML内容的表。如何让IE保留输入字段并在下面显示表格? 这是我的一段代码,包含了所有必要的部分。。。提前谢谢你

<html>
.........
......
<script type="text/javascript">

function filterTable(f)
{
  ................
  .......
  if (moz)
  {
    ...........
    ....
    var proc = new XSLTProcessor();
    proc.importStylesheet(stylesheet);
    var resultFragment = proc.transformToFragment(xmlDoc, document);
    document.getElementById("target4").appendChild(resultFragment);
  }

  else if (ie)
  {
    .....
    ......
    value.setAttribute("select", "books/scifi" + filter);
    value2.setAttribute("select", sorter);

   document.write(xmlDoc.transformNode(stylesheet));
  }
}

</script>
<form>
  ...........
  ....
  <input type="button" value="Display" onClick="filterTable(this.form)"/>
</form>

<body id="target4">
</body>
</html>

在加载文档后使用时,“写入”将覆盖整个文档。也可以使用另一种方法来注入新内容,例如,在这里设置elementDOM方法的innerHTML不起作用,因为IE不允许在文档之间移动节点

有关评论:

从中获取的表的标记

xmlDoc.transformNode(stylesheet)
必须首先从此标记创建节点:

  //create a dummy-wrapper
var wrapper=document.createElement('div');

  //insert the markup
wrapper.innerHTML=xmlDoc.transformNode(stylesheet);

  //inject the first child into the document
document.getElementById("target4").appendChild(wrapper.firstChild);

  //delete the wrapper, we don't need it anymore
delete wrapper;

我不知道innerHTML是如何工作的。是否要在innerHTML元素中包含filterTable函数的结果?因为我在网上找到的所有示例都与刷新屏幕文档上的文本有关,所以我该如何做呢;在我的例子中,内容是函数filterTable的结果。。对吗?@user1073400按照您在这里所说的,您要做的是添加一个id为foo的div,然后执行document.getElementById'foo.innerHTML=HtmlOutSerializedAsString@cm2 htmlOutputSerializedAsString我该怎么做??如何将整个表的函数输出转换为序列化字符串?替换document.writexmlDoc.transformNodestylesheet;对于第二个代码段,从createElement到deletetarget 4的4条指令不是target4的子指令,因此这将不起作用。代替使用replaceChild,您仍然可以使用appendChild,但在将target4的innerHTML设置为空字符串之前,这将删除当前内容。您的函数以不同的方式显式处理IE,使用document.write而不是.appendChild,因此您得到不同的行为并不奇怪。另外,表单元素应该在body元素中。