【发布时间】:2011-10-08 09:55:38
【问题描述】:
编辑: 好的,我相信我已经使用@ManseUK 发布的信息以及@Johan 的评论找到了解决此问题的方法。作为一个 n00b,我无法回答我自己的问题,但我在问题下方添加了一个解释,以防它帮助其他人。
我正在重写一个电子商务解决方案的一部分,该解决方案由 几年前的另一个开发团队。在新版本中,我们 尝试使用 Ajax 缩短用户旅程,但这样做 给出 JavaScript 错误并导致某些函数失败。开发网址是 这里:
http://cognition.thelightbulb.co.uk/type-18/general-purpose-lamps-and-bulbs/craftlight-daylight
一旦选择了下拉菜单并且 产品展示。
错误在 IE7 中最为明显:
Error: 'frm.qty' is null or not an object Error: 'qty.value' is null or not an object我相信这就是问题所在:
var frm = document.frmOrder; var qty = frm.qty;在上面的行中,
frmOrder是表单的名称,qty是 产品数量的输入名称。将其与 http://cognition.thelightbulb.co.uk/product-54 进行比较,其中 产品在没有 Ajax 选择过程的情况下加载,您将看到 功能正常工作。
我怀疑问题与
var frm = document.frmOrder;无法正常工作有关,因为它与 使用 Ajax 加载时的 DOM。我使用
innerHTML=xmlhttp.responseText作为Ajax 方法。是 有另一种方法来定义var frm以便它能够运行 加载 Ajax 时是否正确?
编辑:
使用@ManseUK 发布的信息以及@Johan 的评论,我向CheckMinQty(minorder) 添加了另一个参数,所以它现在看起来像这样......
function CheckMinQty(minorder,qty)
...qty 在 onclick 事件中作为 document.forms['frmOrder'].qty.value 传递给函数
然后我将整个函数移到一个单独的 .js 文件中。这可能不是最好的方法,但 Ajax 调用仍然感觉更整洁,只返回 CheckMinQty 可以使用的可用 HTML,而不是引入整个负载 <script> 然后尝试运行它。
感谢所有建议,我欢迎任何有关上述方法/解决方案的 cmets。
【问题讨论】:
标签: php javascript ajax dom