getElementById没有返回正确的值(可能是语法问题?)

时间:2013-05-02 20:26:38

标签: javascript google-chrome xslt

我正在使用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 + '"/>';
 }

1 个答案:

答案 0 :(得分: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&gt; 6)