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

Why are new tables being created instead of the same one being refreshed in my HTML file?

本文关键字:刷新 同一个 新表 创建 我的 HTML 文件 为什么      更新时间:2023-09-26

我该怎么做才能在点击显示时刷新表?目前,每当点击显示时,就会在上一个表的下面创建一个新表。

当页面第一次加载时,我希望在输入字段下面显示整个表(即我的整个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>

write()将覆盖整个文档,当在加载文档后使用时。也可以使用另一种方法来注入新内容,例如设置元素的innerHTML(DOM方法在这里不起作用,因为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;