0

我有一个使用 XML 和 XSL 的 html 页面。并且有 html 标签,如<table>,<tr><td>. 我想从 javaScript 访问这些标签并从 javaScript 为其属性设置值。我尝试使用 GetElementById、GetElementByName、GetElementByTagName 来访问下面发布的代码中的 and ,但无法这样做。

代码摘录:

<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") 并快速查看时,它返回了一个对象,但计数为 0。

我搜索了很多,但找不到任何相关的东西。我对 XML 和 XSL 很陌生,请指导。

4

1 回答 1

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">  
于 2013-10-31T08:15:28.257 回答