2016-04-02 6 views
1

Моя проблема заключается в том, что когда я создаю скрипт тегов корыто JavascriptФункция внутри тега сценария, вставленного с помощью JavaScript остается неопределенным

var script = document.createElement('script');  
    script.setAttribute('type', 'text/javascript'); 
    document.getElementById("fastexe").appendChild (script); 

(ДИВ родительский сценарий является до этого сценария), и вставить функцию в нем нравится, так

script.innerHTML = "function in_my_script(){ \n"; 
    script.innerHTML += "alert('test'); \n }"; 

, когда я пытаюсь вызвать свою функцию (function_in_my_script) через консоль или даже так:

script.innerHTML += "\n function_in_my_script();"; 

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

Я не понимаю, почему функция остается неопределенной. Спасибо за вашу помощь.

+1

Какой браузер вы это делаете в? Afaik, некоторые из них имеют проблемы с 'innerHTML' на элементах сценария – Bergi

+1

Вы должны попробовать заполнить элемент сценария перед добавлением его в DOM. Афаик, это единственный раз, когда он будет оценен. – Bergi

+0

Ваша функция называется 'in_my_script', а не' function_in_my_script'. Если это всего лишь пример кода, пожалуйста, отредактируйте свой вопрос. – Xufox

ответ

1

Каждый раз, когда вы добавляете строку к внутреннему HTTML-элементу , браузер пытается запустить элемент. Это приводит к синтаксической ошибке, когда SCRIPT просто function in_my_script(){.

Вместо этого построить содержимое скрипта в переменной, а затем добавить его в script.innerHTML все сразу:

var script = document.createElement('script'), 
 
    s; 
 

 
script.setAttribute('type', 'text/javascript'); 
 
document.getElementById("fastexe").appendChild(script); 
 

 
s = "function in_my_script(){ \n"; 
 
s += "alert('test'); \n }"; 
 
s += "\n in_my_script();"; 
 

 
script.innerHTML= s;
<div id="fastexe"></div>

+0

Работа! Большое вам спасибо, никогда не сложно это толковать так! – Apotheose

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

  • Нет связанных вопросов^_^