我试图迭代由类名指定的元素数组。然后我想使用一个函数来切换类并更改一些文本。
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>
答案 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