如何创建 Jquery 数组对象
How to create a Jquery array object
我必须按以下格式将值传递给 highChart
data: [
['Firefox', 45.0],
['IE', 26.8],
]
我在 table 中有这样的值
<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>
我尝试像这样从 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;
}
});
});
谁能帮我解决我哪里做错了
提前致谢
您尝试创建的数据结构是一个包含数组的数组。它是原生 JS 构造,与 jQuery 无关。您遇到的问题是您试图通过提供 key/value 对来创建数组项,这对对象来说很好,但在这里不起作用。
首先,需要在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
});
您正在回调函数中声明变量 data
。这意味着它将为每一行重新创建,并且一旦您遍历所有行,它将不再可用。在循环外声明它。
您将值以 属性 的形式放入变量中,而不是数组项。这意味着数组仍然是空的。创建一个数组,并添加到数组 data
.
您在内部 each
的回调函数中声明了变量 label
,因此它会消失并在第二个单元格第二次调用回调时重新创建。在该循环外声明 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 ]);
}
});
});
我必须按以下格式将值传递给 highChart
data: [
['Firefox', 45.0],
['IE', 26.8],
]
我在 table 中有这样的值
<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>
我尝试像这样从 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;
}
});
});
谁能帮我解决我哪里做错了
提前致谢
您尝试创建的数据结构是一个包含数组的数组。它是原生 JS 构造,与 jQuery 无关。您遇到的问题是您试图通过提供 key/value 对来创建数组项,这对对象来说很好,但在这里不起作用。
首先,需要在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
});
您正在回调函数中声明变量 data
。这意味着它将为每一行重新创建,并且一旦您遍历所有行,它将不再可用。在循环外声明它。
您将值以 属性 的形式放入变量中,而不是数组项。这意味着数组仍然是空的。创建一个数组,并添加到数组 data
.
您在内部 each
的回调函数中声明了变量 label
,因此它会消失并在第二个单元格第二次调用回调时重新创建。在该循环外声明 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 ]);
}
});
});