0

链接到 jsFiddle

我有许多包含文本的元素,我使用这些文本parseInt()从特定数量的元素(基于当前月份)和特定的选择器通配符中获取值,并将这些值推送到六个数组之一中以供其他地方使用。我正在尝试清理代码并制作一个紧凑的循环来完成所有这些。

如果我使用六个单独的for循环,我可以让一切正常工作,但我想我可能会尝试看看它是否能够在一个循环中完成。

所以在下面的for循环中,我试图通过尝试类似的方法使元素 ID 的 jQuery 通配符选择器成为i(from ) 的当前值,但这似乎不起作用。statusArray$('[id*=statusArray[i]])

然后我想通过类似的方式将数据推送到预定义的适当数组中,statusArray[i]Array.push(...)但这也不起作用。我试过连接各种方式,但似乎无法让它发挥作用。

任何帮助,将不胜感激!先感谢您!

HTML:

<div id="jan_connected"></div>  <!-- left empty to test for NaN -->
<div id="jan_busy">100</div>
<div id="jan_noanswer">100</div>
<div id="jan_abandoned">100</div>
<div id="feb_minutes">100</div>
<div id="feb_totals_calls_c">100</div>
<div id="feb_connected">100</div>
<div id="feb_busy">100</div>
<div id="feb_noanswer">100</div>
<div id="feb_abandoned">100</div>

Javascript:

var connectedArray = [];
var busyArray = [];
var noanswerArray = [];
var abandonedArray = [];
var minutesArray = [];
var callsArray = [];
//    var date = new Date();
//    var dateNumber = 1 + date.getMonth();
var dateNumber = 2;
var statusArray = ['minutes', 'total_calls', 'connected', 'busy', 'noanswer', 'abandoned']

for (i=0; i<dateNumber; i++) {
    // Below I would like the id* to equal the current value of the statusArray iteration
    if (isNaN(parseInt($('[id*=statusArray[i]]').slice(i).html()))) {
        statusArray[i]Array.push("0");   // Trying to push into the appropriate array dynamically
    } else {
        statusArray[i]Array.push(parseInt($('[id*=statusArray[i]]').slice(i).html()));
    }
}
4

1 回答 1

1

您在几个地方有语法错误..

这条线

$('[id*=statusArray[i]]')

应该是

$('[id*=' + statusArray[i] + ']')

 statusArray[i] Array.push("0");

应该

 statusArray[i].push("0");

Push方法在 Array 上可用,但statusArray[i]不是数组而是字符串。

看起来你正在寻找这样的东西

var connectedArray = [];
busyArray = [];
noanswerArray = [];
abandonedArray = [];
minutesArray = [];
callsArray = [];
dateNumber = 2;
statusArray = ['minutes', 'total_calls', 'connected', 'busy', 'noanswer', 'abandoned'];
var obj = {
    'minutes': minutesArray,
        'totals_calls': callsArray,
        'connected': connectedArray,
        'busy': busyArray,
        'noanswer': noanswerArray,
        'abandoned': abandonedArray
};

for (i = 0; i < statusArray.length; i++) {
    $('[id*="' + statusArray[i] + '"]').each(function () {
        var val = $(this).html();
        if (isNaN(parseInt(val))) {
            obj[statusArray[i]].push("0");
        } else {
            obj[statusArray[i]].push(val);
        }
    });
}

    console.log('Minutes Array: ' + obj['minutes']);
    console.log('Total Calls Array: ' + obj['totals_calls']);
    console.log('Connected Array: ' + obj['connected']);
    console.log('No Answer Array: ' + obj['noanswer']);
    console.log('Abandoned Array: ' + obj['abandoned']);
    console.log('Busy Array: ' + obj['busy']);

检查小提琴

于 2013-06-20T00:01:23.793 回答