简体   繁体   中英

how to save user input data and render chart to different html pages using canvas js using local storage?

I want to be able to save the user's input table for alpha beta and gamma value so that when you click on submit button it automatically directs you to a different HTML page where the charts render on different pages.please provide me the steps to render charts on different html pages when i save some values in my table. I am able to render chart on same page but need to render on different pages. Thanks in advance..

  <style>
        data {
            color: #136bc2;
        }
    </style>
    <body>
   <script src="https://cdn.jsdelivr.net/npm/chart.js@2.8.0"></script>
   <div id="aditablediv">
   <p>
   <input type="button" id="bt" value="Submit Data" onclick="submit()" />
   </p>
   <input type="button" onclick="insRow()" id="addadibutton" value="Add values"/><br/><br/>
   <table id="adiTable" border="1">
   <thead>
       <tr>
           <td>WEEK NO</td>
           <td>alpha</td>
           <td>beta</td>
           <td>gamma</td>
           <td>Delete?</td>

       </tr>
       </thead>
       <tbody>
       <tr>
           <td><input size=25 type="text" id="weekbox"/></td>
           <td><input size=25 type="text" id="latbox"/></td>
           <td><input size=25 type="text" id="lngbox"/></td>
           <td><input size=25 type="text" id="lnbox"/></td>
           <td><input type="button" id="deladibutton" value="Delete" onclick="deleteRow(this)"/></td>

       </tr>
       <tbody>
   </table>
   <canvas id="barChart"></canvas>
   </body>
   <script>
   function deleteRow(row)
    {
        var i=row.parentNode.parentNode.rowIndex;
        if(i>1){
        document.getElementById('adiTable').deleteRow(i);
        }

    }


    function insRow()
    {

        var x=document.getElementById('adiTable');
        var new_row = x.rows[1].cloneNode(true);
        var len = x.rows.length;
        new_row.cells[0].childNodes[0].value = "";

        var inp1 = new_row.cells[1].getElementsByTagName('input')[0];
        inp1.id += len;
        inp1.value = '';
        var inp2 = new_row.cells[2].getElementsByTagName('input')[0];
        inp2.id += len;
        inp2.value = '';
        x.appendChild( new_row );
        var inp3 = new_row.cells[3].getElementsByTagName('input')[0];
        inp3.id += len;
        inp3.value = '';
        x.appendChild( new_row );
    }
   function submit() 
   {
     var table = document.getElementById("adiTable")
     var tableLen = table.rows.length           
     var data = {labels: [], alpha: [], beta: []}

   for (var i = 1; i < tableLen; i++) 
  {
     data.labels.push(table.rows[i].cells[0].childNodes[0].value)
     data.alpha.push(table.rows[i].cells[1].childNodes[0].value)
     data.beta.push(table.rows[i].cells[2].childNodes[0].value)
  }
    var canvasP = document.getElementById("barChart")
    var ctxP = canvasP.getContext('2d')
    var mybarChart = new Chart(ctxP, {type: 'bar',
    data: 
        { 
            labels: data.labels,
            datasets: [
      {label: "alpha", data: data.alpha, borderColor: "ORANGE"},
      {label: "beta", data: data.beta, borderColor: "GREEN"}
    ]
        },
        options: {
            legend: {
            display: true,
            position: "right"
            }
        }
    });

These two methods can help. More reference here

localStorage.setItem('myCat', 'Tom');
const sth = localStorage.getItem('myCat');

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM