webForumDet fria alternativet

Räkna ut värden under 10

JavaScriptur Javascript

5 svar · 139 visningar · startad av Akerlundh

Medlem sedan maj 20031 682 inlägg
Frågan#1

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>
Medlem sedan jan. 2005953 inlägg
#2

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.

Medlem sedan maj 20031 682 inlägg
#3

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? :)

Medlem sedan jan. 2005953 inlägg
#4

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
Medlem sedan maj 20031 682 inlägg
#5

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++) {
Medlem sedan maj 20031 682 inlägg
#6

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;
}
134 ms totalt · 3 externa anrop · v20260731065814-full.4bcf49fe
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)