2014-09-24 4 views
0

Я использую dotnet.highcharts создать таблицу во время выполнения:Добавить и Вызов JavaScript функции во время выполнения внутри innerHtml

Я использую вызов 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> 

Теперь я ставлю это внутри сНу элемента (где данные выше фрагмент кода):

$(myDiv).innerHtml = data; 

Далее мне нужно вызвать функцию 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> 

ответ

0

TestFunction не "живут внутри div". JavaScript не является частью разметки таким образом.

Как только определена функция:

function TestFunction() { 
    // code 
} 

Он доступен с тех пор, как глобальной функции на объекте window. Так откуда угодно еще на странице вы можете вызвать его:

TestFunction(); 

Конечно, если это div является повторяется в любом случае, и Вы предполагаете какой-то именования функций в div с, то вы Я нахожу, что это не так на практике. Если функция глобально определена в любом месте документа, тогда второе определение просто перезапишет первое.

+0

Но почему я не могу назвать TestFunction()? Я получаю сообщение «Uncaught ReferenceError: TestFunction не определено», когда я пытаюсь вызвать его с консоли – buddybubble

+0

@buddybubble: вы не предоставляете никакой информации об этом в вопросе, поэтому я могу только догадываться. Казалось бы, ясно, что когда вы пытаетесь назвать это, функция * не была определена. Возможно, я неправильно понял, что сам код JavaScript * возвращается при вызове AJAX? Это определенно вызовет некоторые интересные сценарии, особенно если их несколько. Но оценка JavaScript, возвращаемая AJAX, может потребовать немного обмана. Например: http://stackoverflow.com/questions/8097558/proper-way-to-execute-javascript-returned-via-ajax-no-jquery – David

+0

Мое дело похоже на то, что вы связали. Как я уже сказал, я получаю смесь html и js в результате вызова ajax, см. Мой первый фрагмент кода. Я помещаю это в innerHtml внутри div. Затем я хочу назвать одну часть (TestFunction) кода, который я только что вставил в div – buddybubble

Смежные вопросы