【发布时间】:2013-02-20 17:07:13
【问题描述】:
我正在尝试在下面的代码中添加一个计数器。
我正在遍历页面中的 DOM 元素并将文本字符串转换为对象。我正在尝试创建以下原型的对象:
// my desired object layout:
eligList = {
'perfect': {
'id': 1,
'qty': 3
}
}
$(document).ready(function() {
eligList = {};
// FROM: http://www.jquery4u.com/jquery-functions/jquery-each-examples/
$(selector).each(function(index, value) {
$this = $(this); // cache
apr = parseFloat($.trim($this.find('.apr .js-apr').text()));
eligName = $.trim($this.find('.eligibility .js-hist').text());
eligList[eligName] = (eligList[eligName] || {});
switch(eligName) {
case 'perfect':
eligID = 1;
// THE PROBLEM!
console.log('eligList', eligList.perfect); // empty :s
eligList[eligName]['qty'] = (eligList[eligName]['qty']++ || 1); // eligList.perfect.qty never gets set (at all)
break;
case 'excellent':
eligID = 2;
break;
case 'good':
eligID = 3;
break;
case 'average':
eligID = 4;
break;
default:
eligID = 5;
break;
}
eligList[eligName] = {'id': eligID};
$this.data({'apr': apr, 'elig': eligID});
console.group('article ' + index);
console.log(apr);
console.log(eligID);
console.groupEnd();
});
console.log(eligList);
});
我怀疑这是范围问题。所以,我的问题是如何让我的脚本计数perfect、excellent、good 等的quantity?
【问题讨论】:
-
你的
console.log('eligList', eligList.perfect)不应该在你分配之后出现吗? -
糟糕,在发布此内容之前我已经进行了一些重构。总体问题仍然有效:)
标签: javascript object dynamic counter