0

我创建了一个包含一些嵌入式 JavaScript 的 XSL 样式表。它调用函数,然后调用 document.write() 将这些函数的结果打印到页面。

<xsl:foreach...>
<div class="directionBlock">
<script type="text/javascript">writeDirection('<xsl:value-of select="Direction"/>');</script>
</div>
</xsl:foreach...>

不幸的是,在 Firefox 中,不支持 document.write()。该怎么办?

4

2 回答 2

1

为什么需要 XSLT 和 Javascript 来输出 HTML?如果您的目标是在div包含script元素中输出某些内容,那么请考虑单独使用 XSLT 来完成。如果您确实需要使用 Javascript 来创建内容,请考虑使用 和 之类的方法createElementappendChild代替document.write. 就一般答案可以提供帮助而言,如果您需要具体帮助,那么我们需要查看您的代码的详细信息,例如该writeDirection函数以及您传递给它的参数。

为了给您一些示例代码的概述,如果您 writeDirection 函数需要向 div 添加内容然后在 div eg 上放置一个 id <div id="db1" class="directionBlock">...</div>,然后将其传递给 writeDirection 函数 eg <script type="text/javascript">writeDirection('<xsl:value-of select="Direction"/>', document.getElementById('db1'));</script>,然后在该函数中简单地做

function writeDirection(dir, elementToWriteTo) {
  // instead of document.write(stuff) use
  var span = document.createElement('span');
  span.innerHTML = stuff;
  elementToWriteTo.appendChild(span);
}
于 2011-05-24T16:06:26.503 回答
0

我实现解决方案的方式是调用一个函数并传递行号:

<xsl:foreach...>
  ...
  <div class="directionBlock">
    <script>myJsFunction('<xsl:value-of select="Direction"/>', <xsl:value-of select="position()"/>);</script>
  </div>
  ...
</xsl:foreach...>

这反过来使用 JQuery 访问相关元素,使用 nth-child(position) 获取行,找到选择器并使用 .html() 将代码插入该元素。

感谢你的帮助!

于 2011-05-25T17:08:07.147 回答