第二次调用(及后续调用)后,JavaScript函数不起作用

时间:2018-10-19 17:03:49

标签: javascript c# asp.net asp.net-mvc

我有一个非常奇怪的问题。我正在使用MVC 3在C#中开发功能。单击选项卡时,控制器将返回部分视图,并且该视图将调用绘制图形的javascript文件。在第一个调用中,系统运行良好,JS文件正常运行。但是,如果我再次单击选项卡(或转到另一个选项卡并返回),则将不再执行JS文件。调试代码后,我看到实际上是视图已执行,并且调用JS方法的行也是如此,但莫名其妙地,控件从未传递给JS文件。最奇怪的是,Chrome控制台不会返回任何错误。

我的视图(aspx)中包含以下代码:

<div class="widget-content">

        <div id="containerWidgetTension" style="height: 300px; min-width: 310px; text-align: center; font-weight: bolder"></div>
        <%
            UrlAccion = Url.Action("GetSerieGraficoTension", "Terminales");
        %>


        <script src="content/JS/Graficos/graficotension.js" type="text/javascript"></script>
        <script type="text/javascript">
            function WidgetTension() {
                var param = {
                    accion: '<%= UrlAccion %>',
                    container: 'containerWidgetTension',
                    terminal: '<%= vd.Terminal.NumeroDeSerie %>',
                    fechaDesde: '<%= fechaHasta %>',
                    fechaHasta: '<%= fechaHasta %>',
                    valorConstante: '<%=ViewBag.ValorConstanteTension%>',
                    TT: '<%= vd.Terminal.TT %>'
                }

                MostrarGraficoTension(param);
            };

            $(function () {
                WidgetTension();
            });
        </script>
    </div>

Javascript函数位于单独的文件graficotension.js中:

function MostrarGraficoTension(param) {

accion = param.accion;
terminal = param.terminal;
fechaDesde = param.fechaDesde;
fechaHasta = param.fechaHasta;
monofasico = param.monofasico;
mostrarUmbrales = param.mostrarUmbrales;
umbralTensionMaxima = param.umbralTensionMaxima;
umbralTensionMinima = param.umbralTensionMinima;
valorConstante = param.valorConstante;
TT = param.TT;
var container = param.container;

function createChart(data) {

    Highcharts.setOptions(options); //el objeto "options" se levanta del script "configuracion.js"

    chart = new Highcharts.StockChart({

        chart: {
            renderTo: container,
            type: 'spline'
        },

        colors: ['#3131F8', '#FB1C1C', '#008000', '#f7a35c', '#8085e9',
            '#f15c80', '#e4d354', '#8085e8', '#8d4653', '#91e8e1'],

        yAxis: {
            opposite: false,

            showLastLabel: true,

            labels: {
                //format: "{value} V",
                formatter: function () {
                    return (TT == 100) ? this.value + " V" : (this.value / 1000).toFixed(0) + " kV";
                },
                align: "right"
            },

            title: {
                text: 'Tensión'
            }
        },

        plotOptions: {
            series: {
                events: {
                    show: function () {
                        var id = (this.name == 'Tensión') ? '#tablaL1' : "#tabla" + this.name;
                        //$(id).show();
                        $(id).css('visibility', 'visible');
                    },
                    hide: function () {
                        var id = (this.name == 'Tensión') ? '#tablaL1' : "#tabla" + this.name;
                        //$(id).hide();
                        $(id).css('visibility', 'hidden');
                    }
                }
            }
        },

        tooltip: {
            pointFormatter: function () {
                var n = this.series.name;
                if (n == "L1" || n == "L2" || n == "L3" || n == "Tensión") {
                    var s = '<span style="color:' + this.series.color + '">' + this.series.name + '</span>: <b>';
                    if (TT == 100)
                        return s + Highcharts.numberFormat((this.y), 1, '.') + ' V</b><br/>';
                    else
                        return s + Highcharts.numberFormat((this.y / 1000), 2, '.') + ' kV</b><br/>';
                }
                else {
                    var symbol = '';
                    switch (this.series.symbol) {
                        case 'circle':
                            symbol = '● ';
                            break;
                        case 'diamond':
                            symbol = '♦ ';
                            break;
                        case 'square':
                            symbol = '■ ';
                            break;
                        case 'triangle':
                            symbol = '▲ ';
                            break;
                        case 'triangle-down':
                            symbol = '▼ ';
                            break;
                    }
                    return '<span style="color:' + this.series.color + '">' + symbol + this.series.name + '</span><br/>';
                }
            }
        },

        legend: {
            enabled: true
        },

        series: data
    });

    umbrales($('#chkUmbrales').is(":checked"));

    actualizarMinMax();
}

$('#' + container).css('cursor', 'default');
$('#' + container).text("Cargando..");

var url = accion;
var parametros = "?Terminal=" + terminal + "&FechaDesde=" + fechaDesde + "&FechaHasta=" + fechaHasta;
url = url + parametros;

$.getJSON(url, function (data) {
    createChart(data);
}).fail(function(jqXHR, status, error){
    $('#' + container).css('cursor', 'default');
    $('#' + container).text("Error cargando la serie.");

    var errorStr = "Error - " + status  + " - " + error;
    console.log(errorStr);
    console.log(jqXHR.responseText);
});

};

0 个答案:

没有答案