我必须按以下格式将值传递给highChart
data: [
['Firefox', 45.0],
['IE', 26.8],
]
我在表格中有这样的值
<table>
<tr>
<th colspan="2">
<div align="left">Expenditure in, or on behalf of, Scotland </div>
</th>
</tr>
<tr class="row">
<td>Public sector debt interest</td>
<td><?php echo $x ?>></td>
</tr>
<tr class="row">
<td>Public sector debt interest</td>
<td><?php echo $x ?>></td>
</tr>
</table>
我试图从表中创建这样的数组,但它不起作用
$('.row').each(function (i) {
var data = [];
$(this).find('td').each(function (j, v) {
if (j == 0)
var label = $(this).html();
else {
var val = $(this).html();
data[label] = val;
}
});
});
任何人都可以帮我解决我犯错误的地方
提前致谢
答案 0 :(得分:2)
您尝试创建的数据结构是包含数组的数组。它是一个原生的JS结构,与jQuery无关。你遇到的问题是你试图通过提供一个键/值对来创建一个数组项,这对于对象很好但在这里不起作用。
首先,需要在each
之外定义父数组。然后,您需要为每一行创建一个新数组并将其推送到父数组。您不需要遍历td
元素,因为您需要同时获取两个元素来创建数组项。试试这个:
var data = [];
$('.row').each(function (i) {
var label = $(this).find('td').eq(0).text(); // get value of the first td as a number
var value = parseFloat($(this).find('td').eq(1).text()); // and the second
data.push([label, value]); // add the new item to the array
});
答案 1 :(得分:1)
您在回调函数中声明变量data
。这意味着它将为每一行重新创建,并且一旦您遍历所有行,它将无法使用。在循环之外声明它。
您以属性的形式将值放在变量中,而不是数组项。这意味着该数组仍然是空的。创建一个数组,并添加到数组data
。
您在内部label
的回调函数中声明变量each
,因此当第二次单元格第二次调用回调时,它将会消失并重新创建。在该循环之外声明label
以保持调用之间的值。
结果中的值应为数字,而不是字符串,因此您应该对其进行解析。
var data=[];
$('.row').each(function (i) {
var label, val;
$(this).find('td').each(function (j, v) {
if (j == 0) {
label = $(this).html();
} else {
val = parseFloat($(this).html());
data.push([ label, val ]);
}
});
});