Meddelande

Minska
No announcement yet.

Räkna ut värden under 10

Minska
X
  • Filter
  • Klockan
  • Show
Clear All
new posts

  • Räkna ut värden under 10

    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?


    HTML-kod:
    <!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>
    Lögnen är vackrare än sanningen, men framförallt roligare! Sökmotoroptimering

  • #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.
    Last edited by metalboy; 2016-06-17, 17:52.
    "Det finns tre sorters lögn; vanlig lögn, förbannand lögn och statistik" - Mark Twain

    Kommentera


    • #3
      metalboy skrev: Visa inlägg
      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?
      Lögnen är vackrare än sanningen, men framförallt roligare! Sökmotoroptimering

      Kommentera


      • #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.
        Kod:
        <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:
        Kod:
        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
        "Det finns tre sorters lögn; vanlig lögn, förbannand lögn och statistik" - Mark Twain

        Kommentera


        • #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

          Kod:
          for (var i = 0; i < tabell.rows.length; i++) {
          Lögnen är vackrare än sanningen, men framförallt roligare! Sökmotoroptimering

          Kommentera


          • #6
            Din kod funkade.

            Kod:
            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;
            }
            Lögnen är vackrare än sanningen, men framförallt roligare! Sökmotoroptimering

            Kommentera

            Working...
            X