我创建了一个包含嵌入式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()。怎么办?
答案 0 :(得分:1)
为什么需要XSLT和Javascript来输出HTML?如果您的目标是输出包含div
元素的script
中的内容,那么请考虑单独使用XSLT。如果您确实需要使用Javascript创建内容,请考虑使用createElement
和appendChild
等方法代替document.write
。
这是一般性答案可以提供帮助,如果您需要特定帮助,那么我们需要查看代码的详细信息,例如writeDirection
函数和传递给它的参数。
为了给你一些示例代码的概述,如果你的writeDirection函数需要向div添加内容,那么在div上添加一个id,例如<div id="db1" class="directionBlock">...</div>
,然后将其传递给writeDirection函数,例如<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);
}
答案 1 :(得分: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()将代码插入到该元素中。
感谢您的帮助!