切换类原型函数

时间:2014-04-08 14:25:32

标签: magento prototypejs prototype

我试图迭代由类名指定的元素数组。然后我想使用一个函数来切换类并更改一些文本。

NOT 工作:

$$('.btn').forEach( setButtonLoadingStateOn, this );

setButtonLoadingStateOn = function( btn ) {
    btn.toggleClassName('loading');
    btn.disable();
    btn.select('span span')[0].update( "please wait..." );
}

NOT 工作:

$$('.btn').each( function(btn) {
    btn.addClassName('loading');
    btn.disable();
    btn.select('span span')[0].innerHTML = "please wait...";
});

这也是 NOT 工作:

setButtonLoadingState( '.btn', 'start' );

setButtonLoadingState = function( btnClass, loadState ) {
    btnElem = $$( btnClass );

    btnElem.each(function( el ){
        if ( loadState == 'start' ) {
            el.addClassName( 'loading' );
            el.disable();
            el.select('span span')[0].innerHTML = "please wait...";
        } else {
            el.removeClassName( 'loading' );
            el.enable();
            el.select('span span')[0].innerHTML = "buy now";
        }
    });
}

如果我console.log()元素,我得到了我期待的对象(或数组),所以我不知道错误。

我还尝试了几个SO答案,包括这个答案:Add or remove class with prototype

如果重要,该平台是Magento CE 1.8.0.2。如何使用Prototype更新这些按钮元素?感谢。

〜编辑〜

页面上有几个HTML元素。他们都看起来像这样:

<button type="button" title="buy now" class="button btn" onclick="productAddToCart(this)">
    <span><span>Quick Buy</span></span>
</button>

1 个答案:

答案 0 :(得分:0)

非常感谢所有贡献者。 AJAX请求在JSON响应中返回一个带连字符的键:

{"msg-html":"blah blah blah"}

从响应对象中读取这个问题是:

var ajaxResult = transport.responseText.evalJSON();
var ajaxMsg = ajaxResult.msg-html;

JSON密钥中不允许使用连字符,而是需要按如下方式访问对象:

var ajaxMsg = ajaxResult["msg-html"];

...或删除连字符!再次感谢所有人。

对此dude / dudette的完全赞誉:http://developer.appcelerator.com/question/120227/parsing-json-with-hyphenated-key-names