Export table as file.txt in JavaScript

I have a table with data and I need to export it as file.txt.I have tried few solutions that I found but nothing works good, it was successful just when I export the table as file.xls. I need to finish this with Javascript. I have csv file with data that I use to insert in the table, but I don’t know where to upload here. It is iris dataset csv, which you can find on google

$(document).ready(function () {
    $.ajax({
        url: "iris_data.csv",
        dataType: "text",
        success: function (data) {
            var iris_data = data.split(/\r?\n|\r/);
            var jsonObj = [];
            for (var i = 0; i < iris_data.length; i++) {
                var data = iris_data[i].split('\n');
                var obj = {};
                for (var j = 0; j < data.length; j++) {
                    obj = data[j].trim();
                    jsonObj.push(obj);
                }
            }
            var arr = JSON.stringify(jsonObj); 
            arr = (arr.split('["')) 
            arr = arr.toString() 
            arr = (arr.split("]")) 
            arr = arr.toString()
            arr1 = arr.split('","'); 

            function fillIn() {
                var N_setosa = 0;
                var N_versicolor = 0;
                var N_virginica = 0;
                var newSetosaArr = [];
                var newVersicolorArr = [];
                var newVirginicaArr = [];
                var subString;
                for (var i = 0; i < arr1.length; i++) {
                    if (arr1[i].includes('Iris-setosa')) {
                        subString = arr1[i];
                        var subArray = subString.split(",")
                        if (subArray[0] === "") {
                            var item = subArray[1];
                            newSetosaArr.push(item)
                        } else {
                            newSetosaArr.push(subArray[0]);
                        }


                        N_setosa++;
                        document.getElementById('N_setosa').innerHTML = N_setosa;
                    } else if (arr1[i].includes('Iris-versicolor')) {
                        subString = arr1[i];
                        var subArray = subString.split(",");
                        newVersicolorArr.push(subArray[0]);
                        document.getElementById('N_versicolor').innerHTML = newVersicolorArr.length;
                        N_versicolor++;
                    } else if (arr1[i].includes('Iris-virginica')) {
                        subString = arr1[i];
                        var subArray = subString.split(",");
                        newVirginicaArr.push(subArray[0]);
                        document.getElementById('N_virginica').innerHTML = newVirginicaArr.length;
                        N_virginica++;
                    }
                    document.getElementById('N_total').innerHTML = N_setosa + N_versicolor + N_virginica;
                }


                function getMin(array) {
                    var result = [];
                    for (var i = 0; i < array.length; i++) {
                        if ((array[i][0] !== "") && !(isNaN(parseFloat(array[i][0])))) {
                            var item = parseFloat(array[i]);
                            result.push(item);
                        } else console.log("fail")
                    }
                    return Math.min(...result);
                }
                document.getElementById('min_setosa').innerHTML = getMin(newSetosaArr);
                document.getElementById('min_versicolor').innerHTML = getMin(newVersicolorArr);
                document.getElementById('min_virginica').innerHTML = getMin(newVirginicaArr);
                document.getElementById('min_total').innerHTML = getMin(newSetosaArr) + getMin(newVersicolorArr) + getMin(newVirginicaArr);

                function getMax(array) {
                    var result = [];
                    for (var i = 0; i < array.length; i++) {
                        if ((array[i][0] !== "") && !(isNaN(parseFloat(array[i][0])))) {
                            var item = parseFloat(array[i]);
                            result.push(item);
                        } else console.log("fail")
                    }
                    return Math.max(...result);
                }

                document.getElementById('max_setosa').innerHTML = getMax(newSetosaArr);
                document.getElementById('max_versicolor').innerHTML = getMax(newVersicolorArr);
                document.getElementById('max_virginica').innerHTML = getMax(newVirginicaArr);
                var sum = getMax(newSetosaArr) + getMax(newVersicolorArr) + getMax(newVirginicaArr);
                document.getElementById('max_total').innerHTML = sum.toFixed(1);

                function getMedian(array) {
                    var result = [];
                    for (var i = 0; i < array.length; i++) {
                        if ((array[i][0] !== "") && !(isNaN(parseFloat(array[i][0])))) {
                            var item = parseFloat(array[i]);
                            result.push(item);
                        } else console.log("fail")
                    }
                    arr = [...result].sort((a, b) => a - b)
                    return (arr[arr.length - 1 >> 1] + arr[arr.length >> 1]) / 2;
                }
                document.getElementById('median_setosa').innerHTML = getMedian(newSetosaArr);
                document.getElementById('median_versicolor').innerHTML = getMedian(newVersicolorArr);
                document.getElementById('median_virginica').innerHTML = getMedian(newVirginicaArr);
                var sum = getMedian(newSetosaArr) + getMedian(newVersicolorArr) + getMedian(newVirginicaArr);
                document.getElementById('median_total').innerHTML = sum.toFixed(1);

                function getMean(array) {
                    var result = [];
                    for (var i = 0; i < array.length; i++) {
                        if ((array[i][0] !== "") && !(isNaN(parseFloat(array[i][0])))) {
                            var item = parseFloat(array[i]);
                            result.push(item);
                        } else console.log("fail")
                    }
                    var sum = result.reduce((a, b) => a + b, 0)
                    var konacno = sum / result.length;
                    return konacno;
                }
                document.getElementById('mean_setosa').innerHTML = getMean(newSetosaArr).toFixed(1);
                document.getElementById('mean_versicolor').innerHTML = getMean(newVersicolorArr).toFixed(1);
                document.getElementById('mean_virginica').innerHTML = getMean(newVirginicaArr).toFixed(1);
                var sum = getMean(newSetosaArr) + getMean(newVersicolorArr) + getMean(newVirginicaArr);
                document.getElementById('mean_total').innerHTML = sum.toFixed(1);

                function getStDeviation(array) {
                    var result = [];
                    for (var i = 0; i < array.length; i++) {
                        if ((array[i][0] !== "") && !(isNaN(parseFloat(array[i][0])))) {
                            var item = parseFloat(array[i]);
                            result.push(item);
                        } else console.log("fail")
                    }
                    const n = result.length;
                    const mean = result.reduce((a, b) => a + b) / n;
                    const s = Math.sqrt(array.map(x => Math.pow(x - mean, 2)).reduce((a, b) => a + b) / n);
                    return s;
                }
                document.getElementById('sd_setosa').innerHTML = getStDeviation(newSetosaArr).toFixed(1);
                document.getElementById('sd_versicolor').innerHTML = getStDeviation(newVersicolorArr).toFixed(1);
                document.getElementById('sd_virginica').innerHTML = getStDeviation(newVirginicaArr).toFixed(1);
                var sum = getStDeviation(newSetosaArr) + getStDeviation(newVersicolorArr) + getStDeviation(newVirginicaArr);
                document.getElementById('sd_total').innerHTML = sum.toFixed(1)
                var first = [];
                var second = [];
                var third = [];
                var fourth = [];

                function izrSetosa(arr) {
                    var result = [];
                    for (var i = 0; i < arr.length; i++) {
                        if ((arr[i][0] !== "") && !(isNaN(parseFloat(arr[i][0])))) {
                            var item = parseFloat(arr[i]);
                            result.push(item);
                        }
                    }
                    for (var i = 0; i < result.length; i++) {
                        if (result[i][0] !== "" && result[i] < 5) {
                            first.push(result[i])
                            document.getElementById('first_setosa').innerHTML = first.length + ' ' + '(' + (first.length * 100 / N_setosa).toFixed(1) + ")";
                        } else if (result[i] >= 5 && result[i] < 6) {
                            second.push(result[i])
                            document.getElementById('second_setosa').innerHTML = second.length + ' ' + '(' + (second.length * 100 / N_setosa).toFixed(1) + ")";
                        } else if (result[i] >= 6 && result[i] < 7) {
                            third.push(result[i])
                            document.getElementById('third_setosa').innerHTML = third.length + ' ' + '(' + (third.length * 100 / N_setosa).toFixed(1) + ")";
                        } else if (result[i] >= 7) {
                            fourth.push(result[i])
                            document.getElementById('fourth_setosa').innerHTML = fourth.length + ' ' + '(' + (fourth.length * 100 / N_setosa).toFixed(1) + ")";
                        }
                    }
                    return first, second, third, fourth;
                }
                izrSetosa(newSetosaArr)
                var firstVer = [];
                var secondVer = [];
                var thirdVer = [];
                var fourthVer = [];

                function izrVersicolor(arr) {
                    var result = [];
                    for (var i = 0; i < arr.length; i++) {
                        if ((arr[i][0] !== "") && !(isNaN(parseFloat(arr[i][0])))) {
                            var item = parseFloat(arr[i]);
                            result.push(item);
                        }
                    }
                    for (var i = 0; i < result.length; i++) {
                        if (result[i][0] !== "" && result[i] < 5) {
                            firstVer.push(result[i])
                            document.getElementById('first_versicolor').innerHTML = firstVer.length + ' ' + '(' + (firstVer.length * 100 / N_versicolor).toFixed(1) + ")";
                        } else if (result[i] >= 5 && result[i] < 6) {
                            secondVer.push(result[i])
                            document.getElementById('second_versicolor').innerHTML = secondVer.length + ' ' + '(' + (secondVer.length * 100 / N_versicolor).toFixed(1) + ")";
                        } else if (result[i] >= 6 && result[i] < 7) {
                            thirdVer.push(result[i])
                            document.getElementById('third_versicolor').innerHTML = thirdVer.length + ' ' + '(' + (thirdVer.length * 100 / N_versicolor).toFixed(1) + ")";
                        } else if (result[i] >= 7) {
                            fourthVer.push(result[i])
                            document.getElementById('fourth_versicolor').innerHTML = fourthVer.length + ' ' + '(' + (fourthVer.length * 100 / N_versicolor).toFixed(1) + ")";
                        }
                    }
                    return firstVer, secondVer, thirdVer, fourthVer;
                }
                izrVersicolor(newVersicolorArr)
                var firstVir = [];
                var secondVir = [];
                var thirdVir = [];
                var fourthVir = [];

                function izrVirginica(arr) {
                    var result = [];
                    for (var i = 0; i < arr.length; i++) {
                        if ((arr[i][0] !== "") && !(isNaN(parseFloat(arr[i][0])))) {
                            var item = parseFloat(arr[i]);
                            result.push(item);
                        }
                    }
                    for (var i = 0; i < result.length; i++) {
                        if (result[i][0] !== "" && result[i] < 5) {
                            firstVir.push(result[i])
                            document.getElementById('first_virginica').innerHTML = firstVir.length + ' ' + '(' + (firstVir.length * 100 / N_virginica).toFixed(1) + ")";
                        } else if (result[i] >= 5 && result[i] < 6) {
                            secondVir.push(result[i])
                            document.getElementById('second_virginica').innerHTML = secondVir.length + ' ' + '(' + (secondVir.length * 100 / N_virginica).toFixed(1) + ")";
                        } else if (result[i] >= 6 && result[i] < 7) {
                            thirdVir.push(result[i])
                            document.getElementById('third_virginica').innerHTML = thirdVir.length + ' ' + '(' + (thirdVir.length * 100 / N_virginica).toFixed(1) + ")";
                        } else if (result[i] >= 7) {
                            fourthVir.push(result[i])
                            document.getElementById('fourth_virginica').innerHTML = fourthVir.length + ' ' + '(' + (fourthVir.length * 100 / N_virginica).toFixed(1) + ")";
                        }
                    }
                    return firstVir, secondVir, thirdVir, fourthVir;
                }
                izrVirginica(newVirginicaArr);
                document.getElementById('fourth_total').innerHTML = fourthVir.length + fourthVer.length + fourth.length + ' ' + '(' + ((fourthVir.length + fourthVer.length + fourth.length) * 100 / (N_setosa + N_versicolor + N_virginica)).toFixed(1) + ")";
                document.getElementById('third_total').innerHTML = thirdVir.length + thirdVer.length + third.length + ' ' + '(' + ((thirdVir.length + thirdVer.length + third.length) * 100 / (N_setosa + N_versicolor + N_virginica)).toFixed(1) + ")";
                document.getElementById('second_total').innerHTML = secondVir.length + secondVer.length + second.length + ' ' + '(' + ((secondVir.length + secondVer.length + second.length) * 100 / (N_setosa + N_versicolor + N_virginica)).toFixed(1) + ")";
                document.getElementById('first_total').innerHTML = firstVir.length + firstVer.length + first.length + ' ' + '(' + ((firstVir.length + firstVer.length + first.length) * 100 / (N_setosa + N_versicolor + N_virginica)).toFixed(1) + ")";
            }
            return fillIn();
        }
    });

});

// function exportF(elem) {
//     var table = document.getElementById("table");
//     var html = table.outerHTML;
//     var url = 'data:application/vnd.ms-excel,' + escape(html); 
//     elem.setAttribute("href", url);
//     elem.setAttribute("download", "export.xls"); 
//     return false;
// }
<!DOCTYPE html>

<html>

   

<head>

  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script> 

    <script type="text/javascript" src="solution.js"></script>

   

     </head>

<body> 

  <style type="text/css">

    .tg  {border-collapse:collapse;border-spacing:0;}

    .tg td{font-family:Arial, sans-serif;font-size:14px;padding:20px 77px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:black;}

    .tg th{font-family:Arial, sans-serif;font-size:14px;font-weight:normal;padding:20px 77px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:black;}

    .tg .tg-0pky{border-color:inherit;text-align:left;vertical-align:top}

    </style>

    <table class="tg" id='table'>

      <tr>

        <th class="tg-0pky"></th>

        <th class="tg-0pky">Iris Setosa </th>

        <th class="tg-0pky">Iris Versicolor </th>

        <th class="tg-0pky">Iris Virginica</th>

        <th class="tg-0pky">Total</th>

      </tr>

      <tr>

        <td class="tg-0pky">Sepal length(cm)</td>

      </tr>

      <tr>

        <td class="tg-0pky">N</td>

        <td class="tg-0pky" id="N_setosa"></td>

        <td class="tg-0pky"id="N_versicolor"></td>

        <td class="tg-0pky"id="N_virginica"></td>

        <td class="tg-0pky"id="N_total"></td>

      </tr>

      <tr>

        <td class="tg-0pky">Min</td>

        <td class="tg-0pky" id="min_setosa"></td>

        <td class="tg-0pky"id="min_versicolor"></td>

        <td class="tg-0pky"id="min_virginica"></td>

        <td class="tg-0pky"id="min_total"></td>

      </tr>

      <tr>

        <td class="tg-0pky">Max</td>

        <td class="tg-0pky" id="max_setosa"></td>

        <td class="tg-0pky"id="max_versicolor"></td>

        <td class="tg-0pky"id="max_virginica"></td>

        <td class="tg-0pky"id="max_total"></td>

      </tr>

      <tr>

        <td class="tg-0pky">Median</td>

        <td class="tg-0pky" id="median_setosa"></td>

        <td class="tg-0pky"id="median_versicolor"></td>

        <td class="tg-0pky"id="median_virginica"></td>

        <td class="tg-0pky"id="median_total"></td>

      </tr>

      <tr>

        <td class="tg-0pky">Mean</td>

        <td class="tg-0pky" id="mean_setosa"></td>

        <td class="tg-0pky"id="mean_versicolor"></td>

        <td class="tg-0pky"id="mean_virginica"></td>

        <td class="tg-0pky"id="mean_total"></td>

      </tr>

      <tr>

        <td class="tg-0pky">standard deviation </td>

        <td class="tg-0pky" id="sd_setosa"></td>

        <td class="tg-0pky"id="sd_versicolor"></td>

        <td class="tg-0pky"id="sd_virginica"></td>

        <td class="tg-0pky"id="sd_total"></td>

      </tr>

      <tr>

        <td class="tg-0pky">Sepal length(%)</td>

      </tr>

      <tr>

        <td class="tg-0pky"> < 5 </td>

        <td class="tg-0pky" id="first_setosa"></td>

        <td class="tg-0pky" id="first_versicolor"></td>

        <td class="tg-0pky" id="first_virginica"></td>

        <td class="tg-0pky" id="first_total"></td>

      </tr>

      <tr>

        <td class="tg-0pky"> >= 5 AND < 6</td>

        <td class="tg-0pky" id="second_setosa"></td>

        <td class="tg-0pky"id="second_versicolor"></td>

        <td class="tg-0pky"id="second_virginica"></td>

        <td class="tg-0pky"id="second_total"></td>

      </tr>

      <tr>

        <td class="tg-0pky">>=6 AND < 7 </td>

        <td class="tg-0pky" id="third_setosa"></td>

        <td class="tg-0pky"id="third_versicolor"></td>

        <td class="tg-0pky"id="third_virginica"></td>

        <td class="tg-0pky"id="third_total"></td>

      </tr>

      <tr>

        <td class="tg-0pky">>= 7</td>

        <td class="tg-0pky" id="fourth_setosa"></td>

        <td class="tg-0pky"id="fourth_versicolor"></td>

        <td class="tg-0pky"id="fourth_virginica"></td>

        <td class="tg-0pky"id="fourth_total"></td>

      </tr>

          <tr>

            <td class="tg-0pky">Sepal width(cm)</td>

          </tr>

          <tr>

            <td class="tg-0pky">N</td>

            <td class="tg-0pky" id="N_setosaW"></td>

            <td class="tg-0pky" id="N_versicolorW"></td>

            <td class="tg-0pky" id="N_virginicaW"></td>

            <td class="tg-0pky" id="N_totalW"></td>

          </tr>

          <tr>

            <td class="tg-0pky">Min</td>

            <td class="tg-0pky" id="min_setosaW"></td>

            <td class="tg-0pky" id="min_versicolorW"></td>

            <td class="tg-0pky" id="min_virginicaW"></td>

            <td class="tg-0pky" id="min_totalW"></td>

          </tr>

          <tr>

            <td class="tg-0pky">Max</td>

            <td class="tg-0pky" id="max_setosaW"></td>

            <td class="tg-0pky" id="max_versicolorW"></td>

            <td class="tg-0pky" id="max_virginicaW"></td>

            <td class="tg-0pky" id="max_totalW"></td>

          </tr>

          <tr>

            <td class="tg-0pky">Median</td>

            <td class="tg-0pky" id="median_setosaW"></td>

            <td class="tg-0pky" id="median_versicolorW"></td>

            <td class="tg-0pky" id="median_virginicaW"></td>

            <td class="tg-0pky" id="median_totalW"></td>

          </tr>

          <tr>

            <td class="tg-0pky">Mean</td>

            <td class="tg-0pky" id="mean_setosaW"></td>

            <td class="tg-0pky" id="mean_versicolorW"></td>

            <td class="tg-0pky" id="mean_virginicaW"></td>

            <td class="tg-0pky" id="mean_totalW"></td>

          </tr>

          <tr>

            <td class="tg-0pky">standard deviation </td>

            <td class="tg-0pky" id="sd_setosaW"></td>

            <td class="tg-0pky" id="sd_versicolorW"></td>

            <td class="tg-0pky" id="sd_virginicaW"></td>

            <td class="tg-0pky" id="sd_totalW"></td>

          </tr>

          <tr>

            <td class="tg-0pky">Sepal width(%)</td>

          </tr>

          <tr>

            <td class="tg-0pky">

              < 3 </td> <td class="tg-0pky" id="first_setosaW">

            </td>

            <td class="tg-0pky" id="first_versicolorW"></td>

            <td class="tg-0pky" id="first_virginicaW"></td>

            <td class="tg-0pky" id="first_totalW"></td>

          </tr>

          <tr>

            <td class="tg-0pky"> >= 3 AND < 3.5</td> <td class="tg-0pky" id="second_setosaW">

            </td>

            <td class="tg-0pky" id="second_versicolorW"></td>

            <td class="tg-0pky" id="second_virginicaW"></td>

            <td class="tg-0pky" id="second_totalW"></td>

          </tr>

          <tr>

            <td class="tg-0pky">>=3.5 AND < 4 </td> <td class="tg-0pky" id="third_setosaW">

            </td>

            <td class="tg-0pky" id="third_versicolorW"></td>

            <td class="tg-0pky" id="third_virginicaW"></td>

            <td class="tg-0pky" id="third_totalW"></td>

          </tr>

     

    </table> 

      

    <!-- <a id="downloadLink" onclick="exportF(this)">Export to excel</a> -->

  

</body>

</html><!DOCTYPE html>
<html>
   
<head>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script> 
    <script type="text/javascript" src="solution.js"></script>
   
     </head>
<body> 

  <style type="text/css">
    .tg  {border-collapse:collapse;border-spacing:0;}
    .tg td{font-family:Arial, sans-serif;font-size:14px;padding:20px 77px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:black;}
    .tg th{font-family:Arial, sans-serif;font-size:14px;font-weight:normal;padding:20px 77px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:black;}
    .tg .tg-0pky{border-color:inherit;text-align:left;vertical-align:top}
    </style>
    <table class="tg" id='table'>
      <tr>
        <th class="tg-0pky"></th>
        <th class="tg-0pky">Iris Setosa </th>
        <th class="tg-0pky">Iris Versicolor </th>
        <th class="tg-0pky">Iris Virginica</th>
        <th class="tg-0pky">Total</th>

      </tr>
      <tr>
        <td class="tg-0pky">Sepal length(cm)</td>
      </tr>
      <tr>
        <td class="tg-0pky">N</td>
        <td class="tg-0pky" id="N_setosa"></td>
        <td class="tg-0pky"id="N_versicolor"></td>
        <td class="tg-0pky"id="N_virginica"></td>
        <td class="tg-0pky"id="N_total"></td>

      </tr>
      <tr>
        <td class="tg-0pky">Min</td>
        <td class="tg-0pky" id="min_setosa"></td>
        <td class="tg-0pky"id="min_versicolor"></td>
        <td class="tg-0pky"id="min_virginica"></td>
        <td class="tg-0pky"id="min_total"></td>
      </tr>
      <tr>
        <td class="tg-0pky">Max</td>
        <td class="tg-0pky" id="max_setosa"></td>
        <td class="tg-0pky"id="max_versicolor"></td>
        <td class="tg-0pky"id="max_virginica"></td>
        <td class="tg-0pky"id="max_total"></td>
      </tr>
      <tr>
        <td class="tg-0pky">Median</td>
        <td class="tg-0pky" id="median_setosa"></td>
        <td class="tg-0pky"id="median_versicolor"></td>
        <td class="tg-0pky"id="median_virginica"></td>
        <td class="tg-0pky"id="median_total"></td>
      </tr>
      <tr>
        <td class="tg-0pky">Mean</td>
        <td class="tg-0pky" id="mean_setosa"></td>
        <td class="tg-0pky"id="mean_versicolor"></td>
        <td class="tg-0pky"id="mean_virginica"></td>
        <td class="tg-0pky"id="mean_total"></td>
      </tr>
      <tr>
        <td class="tg-0pky">standard deviation </td>
        <td class="tg-0pky" id="sd_setosa"></td>
        <td class="tg-0pky"id="sd_versicolor"></td>
        <td class="tg-0pky"id="sd_virginica"></td>
        <td class="tg-0pky"id="sd_total"></td>
      </tr>

      <tr>
        <td class="tg-0pky">Sepal length(%)</td>
      </tr>
      <tr>
        <td class="tg-0pky"> < 5 </td>
        <td class="tg-0pky" id="first_setosa"></td>
        <td class="tg-0pky" id="first_versicolor"></td>
        <td class="tg-0pky" id="first_virginica"></td>
        <td class="tg-0pky" id="first_total"></td>

      </tr>
      <tr>
        <td class="tg-0pky"> >= 5 AND < 6</td>
        <td class="tg-0pky" id="second_setosa"></td>
        <td class="tg-0pky"id="second_versicolor"></td>
        <td class="tg-0pky"id="second_virginica"></td>
        <td class="tg-0pky"id="second_total"></td>
      </tr>
      <tr>
        <td class="tg-0pky">>=6 AND < 7 </td>
        <td class="tg-0pky" id="third_setosa"></td>
        <td class="tg-0pky"id="third_versicolor"></td>
        <td class="tg-0pky"id="third_virginica"></td>
        <td class="tg-0pky"id="third_total"></td>
      </tr>
      <tr>
        <td class="tg-0pky">>= 7</td>
        <td class="tg-0pky" id="fourth_setosa"></td>
        <td class="tg-0pky"id="fourth_versicolor"></td>
        <td class="tg-0pky"id="fourth_virginica"></td>
        <td class="tg-0pky"id="fourth_total"></td>
      </tr>



          <tr>
            <td class="tg-0pky">Sepal width(cm)</td>
          </tr>
          <tr>
            <td class="tg-0pky">N</td>
            <td class="tg-0pky" id="N_setosaW"></td>
            <td class="tg-0pky" id="N_versicolorW"></td>
            <td class="tg-0pky" id="N_virginicaW"></td>
            <td class="tg-0pky" id="N_totalW"></td>

          </tr>
          <tr>
            <td class="tg-0pky">Min</td>
            <td class="tg-0pky" id="min_setosaW"></td>
            <td class="tg-0pky" id="min_versicolorW"></td>
            <td class="tg-0pky" id="min_virginicaW"></td>
            <td class="tg-0pky" id="min_totalW"></td>
          </tr>
          <tr>
            <td class="tg-0pky">Max</td>
            <td class="tg-0pky" id="max_setosaW"></td>
            <td class="tg-0pky" id="max_versicolorW"></td>
            <td class="tg-0pky" id="max_virginicaW"></td>
            <td class="tg-0pky" id="max_totalW"></td>
          </tr>
          <tr>
            <td class="tg-0pky">Median</td>
            <td class="tg-0pky" id="median_setosaW"></td>
            <td class="tg-0pky" id="median_versicolorW"></td>
            <td class="tg-0pky" id="median_virginicaW"></td>
            <td class="tg-0pky" id="median_totalW"></td>
          </tr>
          <tr>
            <td class="tg-0pky">Mean</td>
            <td class="tg-0pky" id="mean_setosaW"></td>
            <td class="tg-0pky" id="mean_versicolorW"></td>
            <td class="tg-0pky" id="mean_virginicaW"></td>
            <td class="tg-0pky" id="mean_totalW"></td>
          </tr>
          <tr>
            <td class="tg-0pky">standard deviation </td>
            <td class="tg-0pky" id="sd_setosaW"></td>
            <td class="tg-0pky" id="sd_versicolorW"></td>
            <td class="tg-0pky" id="sd_virginicaW"></td>
            <td class="tg-0pky" id="sd_totalW"></td>
          </tr>

          <tr>
            <td class="tg-0pky">Sepal width(%)</td>
          </tr>
          <tr>
            <td class="tg-0pky">
              < 3 </td> <td class="tg-0pky" id="first_setosaW">
            </td>
            <td class="tg-0pky" id="first_versicolorW"></td>
            <td class="tg-0pky" id="first_virginicaW"></td>
            <td class="tg-0pky" id="first_totalW"></td>

          </tr>
          <tr>
            <td class="tg-0pky"> >= 3 AND < 3.5</td> <td class="tg-0pky" id="second_setosaW">
            </td>
            <td class="tg-0pky" id="second_versicolorW"></td>
            <td class="tg-0pky" id="second_virginicaW"></td>
            <td class="tg-0pky" id="second_totalW"></td>
          </tr>
          <tr>
            <td class="tg-0pky">>=3.5 AND < 4 </td> <td class="tg-0pky" id="third_setosaW">
            </td>
            <td class="tg-0pky" id="third_versicolorW"></td>
            <td class="tg-0pky" id="third_virginicaW"></td>
            <td class="tg-0pky" id="third_totalW"></td>
          </tr>
     
    </table> 
      
    <!-- <a id="downloadLink" onclick="exportF(this)">Export to excel</a> -->

  
</body>
</html>

Hello and welcome to the forum :partying_face:!

What do you mean by that? Doesn’t work at all, works partially, the format isn’t right, the file is not downloaded, other :slight_smile:?

When you want to share text files or code, you can create a GitHub gist and post the URL here, so other can use it (as long as it doesn’t imply legal problems for you :slight_smile:).

@skaparate Thank you for the answer! With this “nothing works good” i meant that the file is dowloaded, but no with my data and my table, because i dont know how to export that data, I tried this solution https://stackoverflow.com/questions/43135852/javascript-export-to-text-file and i can see that downloaded data is this one from this piece of code :

var saveData = (function () {
var a = document.createElement("a");
document.body.appendChild(a);
a.style = "display: none";
return function (data, fileName) {
    var json = JSON.stringify(data),
        blob = new Blob([json], {type: "octet/stream"}),
        url = window.URL.createObjectURL(blob);
    a.href = url;
    a.download = fileName;
    a.click();
    window.URL.revokeObjectURL(url);
};
}());

var data = { x: 42, s: "hello, world", d: new Date() },
    fileName = "my-download.json";

saveData(data, fileName);

But, i dont know how to use it with my data from the table:(

Hmm, I see a couple of problems with your script, but not for the download. There are some logical errors, assuming we used the same CSV file:

// Here you split the data into "lines", which is fine...
var iris_data = data.split(/\r?\n|\r/);
var jsonObj = [];
for (var i = 0; i < iris_data.length; i++) {
  // ... but here you're simply assigning iris_data[i] to data
  // because no "line" contains a \n (it would have been split before).
  var data = iris_data[i].split('\n'); 
  // Previous line could be rewritten as
  // var obj = iris_data[i]
  var obj = {};
  // On the other hand, does this data (the one you're iterating over)
  // refer to the data received on the response
  // or the data you just defined (I know which one is accessed,
  // but I want to make sure you understand this)
  for (var j = 0; j < data.length; j++) { 
    obj = data[j].trim();
    jsonObj.push(obj);
  }
}

Read my comments and make sure they’re not an error.

Oh! and open the developer tools on your browser (F12 or Control + Shift + i, click on console) when viewing your page so you can see the errors shown there (and fix them).