Получите InnerText в HTML-ячейке таблицы и придайте ей форму, соответствующую API Google Chart
Я пытаюсь получить значение ячейки таблицы с переменным числом строк (созданное из цикла while в php) и сформировать их так, чтобы они соответствовали API Google Chart.
Вот таблица:
<thead>
<tr>
<th>Sport/Month</th>
<th>January</th>
<th>February</th>
<th>March</th>
</tr>
</thead>
<tbody>
<tr>
<td>Tennis</td>
<td>Value Tennis.Jan</td>
<td>Value Tennis.Feb</td>
<td>Value Tennis.Mar</td>
</tr>
<tr>
<td>Football</td>
<td>Value Football.Jan</td>
<td>Value Football.Feb</td>
<td>Value Football.Mar</td>
</tr>
<tr>
<td>Sport_n</td>
<td>Value Sport_n.Jan</td>
<td>Value Sport_n.Feb</td>
<td>Value sport_n.Mar</td>
</tr>
</tbody>
Я хотел бы сформировать это так:
[
['Sport/Month','Tennis','Football','Sport_n'],
['Jan',Value Tennis.Jan, Value Football.Jan, Value Sport_n.Jan],
['Feb',Value Tennis.Feb, Value Football.Feb, Value Sport_n.Feb],
['Mar',Value Tennis.Mar, Value Football.Mar, Value Sport_n.Mar]
]
Чтобы включить его в этот скрипт:
https://code.google.com/apis/ajax/playground/?type=visualization
Я попытался выбрать некоторый код отсюда, используя innerText и т.д.: Как получить значения из ячеек таблицы HTML, используя JavaScript
Но мои знания JS ограничены, поэтому я не мог получить то, что хотел бы...
2 ответа
Если вы хотите использовать JS, этот метод может помочь -
/**
* Pass this method table element, if you table id "t", use this method like -
* getJSONArrayFromTable(document.getElementById("t"))
*
* @param tableElement
* @returns {Array}
*/
function getJSONArrayFromTable(tableElement) {
var json = [];
var rows = [];
Array.prototype.push.apply(rows, tableElement.tHead.rows);
for ( var i = 0; i < tableElement.tBodies.length; i++) {
Array.prototype.push.apply(rows, tableElement.tBodies[i].rows);
}
for ( var i = 0; i < rows.length; i++) {
json[i] = [];
for ( var j = 0; j < rows[i].cells.length; j++) {
json[i].push(rows[i].cells[j].innerHTML);
}
}
return json;
}
Просто создайте массивы для каждого столбца, а затем превратите их в строки.
var $rows = $("table tr"),
len = $rows.length,
chartData = [],
cols = [];
for(var i = 0; i < len; i++){
cols[i] = [];
for(var y = 0; y < len; y++){
cols[i].push(
$rows.eq(y).find("td,th").eq(i).text()
);
}
}
for(var i = 0; i < len; i++){
chartData.push(
cols[i]
);
}
console.log(chartData);