我有许多包含文本的元素,其中我使用parseInt()
从特定数量的元素(基于当前月份)和特定选择器通配符中获取值,并将这些值推送到六个数组中的一个用于别处。我正在尝试清理代码并制作一个紧凑的循环来完成所有这些。
如果我使用六个单独的for
循环,我能够使一切工作正常,但我想我可能会试着看看它是否能够在一个循环中完成。
所以在下面的for
循环中,我试图通过尝试{i
来使元素ID的jQuery通配符选择器成为statusArray
的当前值(来自$('[id*=statusArray[i]])
) {1}}但这似乎不起作用。
然后我想通过像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()));
}
}
答案 0 :(得分:1)
您在几个地方都有语法错误 ..
这一行
$('[id*=statusArray[i]]')
应该是
$('[id*=' + statusArray[i] + ']')
并且
statusArray[i] Array.push("0");
应该是
statusArray[i].push("0");
推送方法在数组上可用,但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']);
<强> Check Fiddle 强>