0

我正在使用 XSL 编写此页面,当我点击复选框时,它会将信息发送到我的 javascript 函数。这一切都适用于 IE,但 Chrome 却不行。问题是,在我点击复选框后,该字段像这样返回为“未定义”

<div id="Part1" value="0-SER-MN">undefined</div>

最初的样子

<div id="Part1" value="0-SER-MN">0-SER-MN</div>

我的猜测是返回的值是“null”,但我不知道为什么?任何人都可以帮忙吗?谢谢。

        <td colspan="2">
        <div>
            <xsl:attribute name="id">Part<xsl:value-of select="position()"/></xsl:attribute>
            <xsl:attribute name="value"><xsl:value-of select="Part"/></xsl:attribute>
            <xsl:if test="ErrorMessage">
                <input type="hidden" name="partNumber">
                    <xsl:attribute name="value"><xsl:value-of select="Part"/></xsl:attribute>
                </input>
                <input type="hidden" name="TempKey">
                    <xsl:attribute name="value"><xsl:value-of select="TempKey"/></xsl:attribute>
                </input>
            </xsl:if>
            <xsl:value-of select="./Part"></xsl:value-of>
        </div>      
    </td>

所以这里是用复选框选择的javascript

     function turnOnOrder(index, tempKey)
 {
    document.getElementById('Part' + index).innerHTML     = '<input type="hidden" name="partNumber" value="' + document.getElementById('Part' + index).value + '"></input>   <input type="hidden" name="TempKey" value="' + tempKey + '"/>' + document.getElementById('Part' + index).value;
        document.getElementById('Location' + index).innerHTML = '<input type="hidden" name="location" value="' + document.getElementById('Location' + index).value + '"></input> ' + document.getElementById('Location' + index).value;
        document.getElementById('Site' + index).innerHTML     = '<input type="hidden" name="siteCode" value="' + document.getElementById('Site' + index).value + '"></input> ' + document.getElementById('Site' + index).value;
        document.getElementById('PONumber' + index).innerHTML = '<input type="hidden" name="origPO" value="' + document.getElementById('PONumber' + index).value + '"></input><input size="20" maxlength="20" type="text" name="PONumber" value="' + document.getElementById('PONumber' + index).value + '"></input>';
        document.getElementById('Quantity' + index).innerHTML = '<input type="hidden" name="OrderQty" value="' + document.getElementById('Quantity' + index).value + '"></input> ' + document.getElementById('Quantity' + index).value;

        if(document.getElementById('viewPrice') == null)
            document.getElementById('Price' + index).innerHTML    = '<input type="hidden" name="Price" value="' + document.getElementById('Price' + index).value + '"></input> ';   
        else
            document.getElementById('Price' + index).innerHTML    = '<input type="hidden" name="Price" value="' + document.getElementById('Price' + index).value + '"></input> ' + document.getElementById('Price' + index).value;

        document.getElementById('UserId' + index).innerHTML   = '<input type="hidden" name="UserId" value="' + document.getElementById('UserId' + index).value + '"></input> ';
        //document.getElementById('InactiveOverride' + index).innerHTML = '<input type="hidden" name="InactiveOverride" value="' + document.getElementById('InactiveOverride' + index).value + '"/>';
        //document.getElementById('MpqMoqOverride' + index).innerHTML = '<input type="hidden" name="MpqMoqOverride" value="' + document.getElementById('MpqMoqOverride' + index).value + '"/>';
        document.getElementById('Other' + index).innerHTML = '<input type="hidden" name="Supplier" value="' + document.getElementById('Supplier' + index).value + '"></input><input type="hidden" name="ICST" value="' + document.getElementById('ICST' + index).value + '"></input><input type="hidden" name="backflush" value="' + document.getElementById('backflush' + index).value + '"></input><input type="hidden" name="Billing" value="' + document.getElementById('Billing' + index).value + '"></input><input type="hidden" name="InactiveOverride" value="' + document.getElementById('InactiveOverride' + index).value + '"/><input type="hidden" name="MpqMoqOverride" value="' + document.getElementById('MpqMoqOverride' + index).value + '"/>';
 }
4

1 回答 1

1

这似乎是一个 javascript DOM 访问问题。和xslt无关。

问题是基于DOM 属性html 属性之间的差异以及浏览器中的不同处理。在大多数情况下,使用 DOM 属性 (dom-elment.attribute-name) 应该可以工作。因为浏览器将 html 属性同步到 DOM 属性。但是对于客户属性(例如,您在 div 处的值属性),这不会发生(在 Chrome 等中)。

因此你应该使用

document.getElementById('Part' + index).getAttribute('value') 

代替document.getElementById('Part' + index).value

这应该适用于所有合理的现代浏览器(例如 IE > 6)

于 2013-05-02T22:52:53.460 回答