Magento错误TypeError:升级

时间:2015-11-25 21:57:28

标签: magento prototypejs

我遇到了Magento错误的问题,而且我已经尝试了几个小时修复它,但不知怎的,我无法弄明白。

我的客户商店在Magento 1.4.1.1上运行,他希望我将其升级到最新的1.9.2.2(社区版)。一切都很好,模板看起来应该是这样,但结账过程刚刚工作,我真的不知道为什么。

每次我在购物车中放一些东西去结帐时,它会将我带到我可以选择注册或登录或继续作为访客的页面。我选择继续作为访客并点击" next",但绝对没有任何反应。

Firefox控制台显示以下错误:

TypeError: element is null in prototype.js:1931

我检查了.js文件,可以看到它在哪一点上使用了一个空元素,这就是:

hide: function(element) {
element = $(element);
   element.style.display = 'none';
return element;

所以基本上它试图隐藏一个对象,它是null。问题是:我不知道哪个文件或导致错误以及如何调试它。我已经阅读了多个帖子,我只能找到一个合适的帖子,上面说某个头部可能会丢失一个结束标签。但是,只有大量的文件,我不知道在哪里看。

如果有人遇到类似问题或知道问题所在,请分享以帮助我解决此问题。

感谢您的帮助!

编辑:

我已经使用过firebug并且能够看到是什么造成了这个错误。 似乎我的opcheckout.js中存在问题。但这是一个magento文件,它没有以任何方式改变,并且在skin / base /文件夹中。

我能想到的唯一一件事就是他们从第1.4.1.1节到第1.9.2.2节改变了一些东西而我没有看到它。

这里是opcheckout.js的代码:

setMethod: function(){
    if ($('login:guest') && $('login:guest').checked) {
        this.method = 'guest';
        var request = new Ajax.Request(
            this.saveMethodUrl,
            {method: 'post', onFailure: this.ajaxFailure.bind(this), parameters: {method:'guest'}}
        );
        Element.hide('register-customer-password');
        this.gotoSection('billing', true);
    }

错误由" Element.hide(' register-customer-password')创建;"。

这是我的主题代码中的代码,其中div位于:

<li class="fields" id="register-customer-password">
                <div class="field">
                    <label for="billing:customer_password" class="required"><em>*</em><?php echo $this->__('Password') ?></label>
                    <div class="input-box">
                        <input type="password" name="billing[customer_password]" id="billing:customer_password" title="<?php echo $this->__('Password') ?>" class="input-text required-entry validate-password" />
                    </div>
                </div>
                <div class="field">
                    <label for="billing:confirm_password" class="required"><em>*</em><?php echo $this->__('Confirm Password') ?></label>
                    <div class="input-box">
                        <input type="password" name="billing[confirm_password]" title="<?php echo $this->__('Confirm Password') ?>" id="billing:confirm_password" class="input-text required-entry validate-cpassword" />
                    </div>
                </div>
            </li>

所以在我看来它试图隐藏的元素就在那里,我不明白为什么它说Element是空的......

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

首先测试元素的存在,这样可以防止抛出'undefined'或'null'错误:

if($(element)){
   element = $(element);
   element.style.display = 'none';
   return element;
}

$(element)相当于document.getElementById(''+ element +'')