在运行时从innerHtml中添加并调用javascript函数

在运行时从innerHtml中添加并调用javascript函数,javascript,jquery,dotnethighcharts,Javascript,Jquery,Dotnethighcharts,我正在使用dotnet.highcharts在运行时创建图表: 因此,我使用ajax调用接收格式化的html。这就是我得到的回报: <div id='bbb55283bfc3440a96c7ae26e130173f_container'></div><script type='text/javascript'> var bbb55283bfc3440a96c7ae26e130173f; function TestFunction() { bbb5528

我正在使用dotnet.highcharts在运行时创建图表:

因此,我使用ajax调用接收格式化的html。这就是我得到的回报:

<div id='bbb55283bfc3440a96c7ae26e130173f_container'></div><script type='text/javascript'>
var bbb55283bfc3440a96c7ae26e130173f;
function TestFunction() {
    bbb55283bfc3440a96c7ae26e130173f = new Highcharts.Chart({
        chart: { renderTo:'bbb55283bfc3440a96c7ae26e130173f_container', defaultSeriesType: 'line' }, 
        title: { text: 'Test' }, 
        xAxis: { categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun'] }, 
        series: [{ data: [12, 23, 1, 9, 34, 54] }]
    });
}
</script>
接下来我需要调用函数TestFunction

我该怎么做?它生活在myDiv中,如下所示:

<div id="chartContainer" style="float:left">
    <div id="bbb55283bfc3440a96c7ae26e130173f_container"></div>
    <script type="text/javascript">
      var bbb55283bfc3440a96c7ae26e130173f;
      function TestFunction() {
        bbb55283bfc3440a96c7ae26e130173f = new Highcharts.Chart({
            chart: { renderTo: 'bbb55283bfc3440a96c7ae26e130173f_container', defaultSeriesType: 'line' },
            title: { text: 'Test' },
            xAxis: { categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun'] },
            series: [{ data: [12, 23, 1, 9, 34, 54] }]
            });
      }
    </script>
TestFunction不存在于div中。JavaScript不是这种方式的标记的一部分

一旦定义了该函数:

function TestFunction() {
    // code
}
从那时起,它作为窗口对象上的全局函数可用。因此,您可以从页面上的任何其他位置调用它:

TestFunction();

当然,如果这个div以任何方式重复,并且您假设div中的函数具有某种名称空间,那么您会发现实际情况并非如此。如果在文档中的任何地方再次全局定义函数,那么第二个定义将简单地覆盖第一个定义。

但是为什么我不能调用TestFunction?我得到了未捕获的引用错误:当我试图从中调用TestFunction时,它没有定义console@buddybubble当前位置在问题中,您没有提供任何相关信息,因此我只能猜测。显然,当你试图调用它时,函数还没有定义。也许我误解了,JavaScript代码本身是由AJAX调用返回的吗?这肯定会引起一些有趣的场景,特别是如果有多个实例的话。但是评估AJAX返回的JavaScript可能需要一些技巧。例如:我的案例似乎与您链接的案例几乎相同。正如我所说,通过ajax调用,我得到了html和js的混合,请参见我的第一个代码片段。我把它和innerHtml放在一个div中,然后我想调用我刚刚插入到div@buddybubble:这个答案看起来特别好:如果您将整个响应作为jQuery对象,那么您应该能够从该对象中提取脚本元素。然后,您可以创建并附加一个新的脚本标记,如答案中所示。谢谢!我只是不明白我为什么要这么做。我不能直接调用函数吗?正如你在最初的回答中所说的那样?
TestFunction();