Jag hade använt parseInt() för att göra om innehållet i cellen till ett heltal, och sedan kontrollerat om heltalsvärdet är under 10.
Edit:
Vid närmare eftertanke hade jag nog faktiskt gjort uträkningen direkt när JSON-objektet behandlas.
5 svar · 139 visningar · startad av Akerlundh
Hejsan.
Jag håller på lite med JSON och javascript.
Jag hämtar värden från ett API och sen skriver jag ut dem i en tabell. Dock så vill jag kunna räkna ut hur många värden som är under 10. Får det dock inte att funka och vet inte riktigt hur jag ska lösa det. Hur hade ni löst detta?
<!DOCTYPE html>
<html>
<body onload="getx();">
<div id="get-value"></div>
<script>
var xmlhttp = new XMLHttpRequest();
var url = "http://";
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
myFunction(xmlhttp.responseText);
}
}
xmlhttp.open("GET", url, true);
xmlhttp.send();
// Räknar ut värde under 10
function getx() {
var rows = document.getElementById('myTable').rows, // get the rows in the table
len = rows.length, // get the quantity of rows
cell = 0, // index of the column (zero based index)
count = 0; // keep score
while( len-- ) {
if( rows[len].cells[cell].innerHTML.indexOf('1') > -10 )
count++;
}
document.getElementById('colx').innerHTML = count;
}
// Slut
function myFunction(response) {
var arr = JSON.parse(response);
var i;
var out = "<table><tbody id='myTable'>";
for(i = 0; i < arr.length; i++) {
out += "<tr><td>" +
arr[i].grank +
"</td><td>" +
arr[i].KW +
"</td><td>" +
arr[i].URL +
"</td><td>" +
arr[i].date +
"</td></tr>";
}
out += "<tr><td id='colx'> </td><td> </td><td> </td><td> </td></tr></tbody></table>";
document.getElementById("get-value").innerHTML = out;
}
</script>
</body>
</html>
Jag hade använt parseInt() för att göra om innehållet i cellen till ett heltal, och sedan kontrollerat om heltalsvärdet är under 10.
Edit:
Vid närmare eftertanke hade jag nog faktiskt gjort uträkningen direkt när JSON-objektet behandlas.
metalboy skrev:
Jag hade använt parseInt() för att göra om innehållet i cellen till ett heltal, och sedan kontrollerat om heltalsvärdet är under 10.
Edit:
Vid närmare eftertanke hade jag nog faktiskt gjort uträkningen direkt när JSON-objektet behandlas.
Är det krångligt för dig eller skulle du kunna ge mig ett exempel? :)
Du kan få exempel på båda tillvägagångssätten. Du behöver dock anpassa dessa exempel så att de passar dina behov eftersom att jag medvetet har gjort så att du inte bara kan klippa och klistra :)
Räkna antalet värden i en specifik kolumn i en tabell som har ett värde över 10.
<table id="minTabell">
<thead><tr><th>Rad</th><th>Värde</th></tr></thead>
<tfoot><tr><td>Antal värden över 10:</td><td id="count"></td></tr></tfoot>
<tbody>
<tr><td>1</td><td>12</td></tr>
<tr><td>2</td><td>8</td></tr>
<tr><td>3</td><td>35</td></tr>
</tbody>
</table>
<script>
var tabell = document.getElementById("minTabell");
var countElement = document.getElementById("count");
var count = 0;
for (var i = 0; i < tabell.rows.length; i++) {
if (parseInt(tabell.rows[i].cells[1].textContent) > 10)
count++;
}
countElement.innerHTML = count;
</script>
Räkna antalet värden över 10 direkt i JSON-objektet:
var test = [
{ "row": 1, "value": 12 },
{ "row": 2, "value": 8 },
{ "row": 3, "value": 35 }
];
var count = 0;
for (var i = 0; i < test.length; i++) {
if (test[i].value > 10)
count++;
}
console.log(count); // 2
Körde ditt första alternativ. Men när jag kollar i konsolen i Chrome får jag detta fel.
Uncaught TypeError: Cannot read property 'rows' of null
for (var i = 0; i < tabell.rows.length; i++) {
Din kod funkade.
function myFunction(response) {
var arr = JSON.parse(response);
var count = 0;
for (var i = 0; i < arr.length; i++) {
if (arr[i].grank > 0 && arr[i].grank <= 10) {
count++;
}
}
console.log(count);
document.getElementById("get-value").innerHTML = count;
}