1

我的问题是,当我通过 javascript 创建脚本标签时

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

(脚本的 div 父级在此脚本之前),我像这样在其中插入一个函数

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

当我尝试通过控制台调用我的函数(function_in_my_script)时,甚至像这样:

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

我得到一个函数未定义错误,显然没有原因。我尝试了不同的函数名称,函数内部没有任何内容,函数中有不同的警报,但没有任何改变结果。

我不明白为什么该函数未定义。谢谢你的帮助。

4

1 回答 1

1

每次将字符串附加到SCRIPT元素的 innerHTML 时,浏览器都会尝试运行该元素。SCRIPT当is 简单时,这会导致语法错误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>

于 2016-04-02T11:54:01.630 回答