0

所以,我正在努力更新 10-12 年的旧代码以兼容 Chrome,但我已经停滞不前了。无论出于何种原因,当我输入一个数字然后单击“fillPO”按钮时,它不会更新任何内容,而是在应该填充的框中放置一个“null”。这在 Internet Explorer 上按预期工作。是否有一般规则可以让它在 chrome 上工作?

<xsl:template name="control-row">
    <xsl:if test="$orderApprove='true' and $isSuperUser='false' and $archiveView='false' ">
        <td nowrap="true" colspan="10">
            <input type="button" name="servlet" value="Approve" onClick="return approveOrder();">&nbsp;checked orders</input>
            <xsl:if test="/poursxml/OrderedFields/Field='PO'">
                &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
                Fill PO number across orders:&nbsp;
                <input type="text" name="genericPO" id = "genericPO" size="15" maxlength="30"/>
                &nbsp;
                <input type="button" value=" Fill PO " onclick="fillPO()"/>
            </xsl:if>
        </td>
    </xsl:if>
</xsl:template>

这是 javascript 中的 fillPO()。

function fillPO()
{
    if(!anySelected())
        alert('Please select an order first.');
    else
    {
        dfa = document.getElementsByName('orderNumber');
        len = dfa.length;
        var ix = 0;
        for(ix=0; ix<len; ix++)
        {
            if(dfa[ix].name == 'orderNumber')
            {
                if(dfa[ix].checked == true)
                {
                    el_id = dfa[ix].id;
                    position = el_id.substring(11);
                    document.getElementById('PONumber' + position).innerHTML = '<input size="15" maxlength="30" type="text" name="PONumber" value="' + document.getElementById('genericPO').getAttribute('value') + '"></input>';
                }
            }
        }    
    }
} 
4

2 回答 2

2

疯狂猜测:替换document.getElementById('genericPO').getAttribute('value')document.getElementById('genericPO').value.

但我们确实需要查看一个示例,以便我们在 Chrome 中重现该问题。

于 2013-04-22T14:12:08.103 回答
1

因为您发布的代码片段中没有明显的问题(至少对我而言)。这里有一些调试提示(可能会有所帮助):

  • 考虑查看生成的 html(可能复制并格式化它)并将其与 IE 生成的 html 进行比较。这可以在 chrome 调试器的 Elements 选项卡中完成。
  • 尝试在可能无法正常工作的 javascript 函数中设置断点。
  • 如果这仍然没有帮助。考虑复制可能是服务器端生成的 xml。这可以在 chrome 调试器的“网络”选项卡中完成。尝试减少xml并离线测试以找到导致问题的部分。
  • 如果调试剂量不能按预期工作。向 javascript添加一些console.log("test point");或调用。alert()

(..可能会继续..)

于 2013-04-23T06:12:26.983 回答