简体   繁体   中英

Why my function does not run <object>

In index.php i run function two times, which include chart.html .

index.php

chart_line($valuesNight);     //run function for the first time
chart_line($valuesEvening);   //run function for the second time
?>
<?php function chart_line($jsonDataSource){ ?>
                <div>
    <script type="text/javascript">

        var dataSource = JSON.parse('<?php echo $jsonDataSource ?>');
        var dValues = new Array;
        var dTimeDate = new Array;

        for(var o in dataSource) {
            dValues.push(dataSource[o]['dValue']);
            dTimeDate.push(dataSource[o]['dTimeDate']);
        }
        console.log('dValues', dValues);
        // store values
        sessionStorage.setItem('myValues', JSON.stringify(dValues));
        sessionStorage.setItem('myTime', JSON.stringify(dTimeDate));

    </script>     //include chart.html
            <object type="text/html" data="chart.html" width="100%"  height="420"></object>
                </div>
        <?php } ?>

When chart_line($valuesNight); runs console.log('dValues', dValues); returns right values, but it does not run this object with chart.html . Then chart_line($valuesEvening); runs and console dvalues returns evening data. After that chart.html starts two times and both times gives me latest (evening) data. How can i fix this problem?

chart.html

<html>
    <body>
        <script type="text/javascript">

// retrieve value
var myTime = JSON.parse(sessionStorage.getItem('myTime'));
var myValuesStr = JSON.parse(sessionStorage.getItem('myValues'));

var myValues = myValuesStr.map(function(item) {
    return parseInt(item, 10);
});

console.log('myTime', myTime);
console.log('myValues', myValues);

$(function () {
    $('#container').highcharts({
        //  ...
    });
});
        </script>

<script src="js/charts.js"></script>
<script src="js/modules/exporting.src.js"></script>

<div id="container" style="min-width: 310px; height: 400px; margin: 0 auto"></div>
    </body>
</html>

Console executes in this order:

console.log('dValues', dValues); // from index.php  - night values
    // HERE SHOUD EXECUTE CONSOLE FROM CHART.HTML
console.log('dValues', dValues); // from index.php  - evening values

console.log('myTime', myTime);      // from chart.html  - evening values
console.log('myValues', myValues);  // from chart.html  - evening values
console.log('myTime', myTime);      // from chart.html  - evening values
console.log('myValues', myValues);  // from chart.html  - evening values

Temporary solution, but it works:

//for valuesNight
$(function () {
    $('#container1').
//...
<div id="container1">

//for valuesEvening
$(function () {
    $('#container2').
//...
<div id="container2">

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