我有一个使用XML和XSL的html页面。还有html标签,例如<table>
,<tr>
和<td>
。我想从javaScript访问这些标记,并从javaScript为其属性设置值。我尝试使用GetElementById,GetElementByName,GetElementByTagName访问下面发布的代码,但无法这样做。
代码摘录:
<xml id="xmlSchedule" LANGUAGE=javascript onreadystatechange="return xmlSchedule_onreadystatechange()"></xml>
<xml id="xslSchedule">
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template>
<table id="tblSchedule" index='0' class="GridText" style="TABLE-LAYOUT:fixed;FONT-SIZE:9pt;FONT-FAMILY:verdana;width=100%">
<xsl:for-each select="VOE-OBJECT/ITEM">
<tr id="trSchedule" onmouseover="this.style.cursor='default'"> <xsl:attribute name="TWRow"></xsl:attribute>
<td data="25" width="20" height='17' align='left'>
<img><xsl:attribute name="SRC"><xsl:eval>getChargeIcon(this)</xsl:eval></xsl:attribute><xsl:attribute name="title"><xsl:eval>getChargeTitle(this)</xsl:eval></xsl:attribute>
</img>
</td>
<td data="24" id='tdNote' width="20" height="17" align='middle'>
<img><xsl:attribute name="SRC"><xsl:eval>getNoteIcon(this)</xsl:eval></xsl:attribute><xsl:attribute name="title"><xsl:eval>getNoteTitle(this)</xsl:eval></xsl:attribute>
</img>
</td>
JavaScript功能:
function XYZ() {
var oRow = document.GetElementByName("TWRow");
var oLength = oRow.childNodes.length;
for (var i = 0; i < olength; i++) {
oRow.childNodes.item(i).attributes.getNamedItem("data")= i;
}
当我使用document.GetElementByName(“TWRow”)并快速检查时,它返回了一个对象但是count为0。
我搜索了很多但找不到任何相关内容。我是XML和XSL的新手,请指导。
答案 0 :(得分:0)
首先,我相信你应该在这里使用“GetElementsByName”,而不是“GetElementByName”(因为它对多个同名的元素有效)
var oRow = document.GetElementByName("TWRow");
但它找不到任何内容的原因是因为HTML中没有名称为“TWRow”的元素。你不这样做的原因是因为这个XSLT
<tr id="trSchedule" onmouseover="this.style.cursor='default'">
<xsl:attribute name="TWRow"></xsl:attribute>
这实际上是在 tr 元素上创建一个名为 TWRow 的属性
<tr id="trSchedule" onmouseover="this.style.cursor='default'" TWRow="">
但是要使GetElementsByName起作用,它需要看起来像这样
<tr id="trSchedule" onmouseover="this.style.cursor='default'" name="TWRow">
要解决此问题,请将XSLT更改为:
<tr id="trSchedule" onmouseover="this.style.cursor='default'">
<xsl:attribute name="name">TWRow</xsl:attribute>
或者更好的是,直接用你的XSLT写出属性
<tr id="trSchedule" onmouseover="this.style.cursor='default'" name="TWRow">