我有一个php文件,它回显了带有<script>
元素的HTML。像这样:
<div>
<button onclick="FunctionName();">Click Me</button>
</div>
<script type="text/javascript" id="script1">
function FunctionName() {
/* block of code here */
}
</script>
<script type="text/javascript" id="script2">
alert("working")
</script>
我在via innerHTML方法中插入此代码。但是,我发现除非你像这样调用它,否则插入的<script>
标签不会被执行:
eval(document.getElementById('script1').innerHTML);
eval(document.getElementById('script2').innerHTML);
现在的问题是:script2正在执行,它正在执行一条警告:“工作”,但当我点击按钮时,控制台会返回此错误:
Uncaught ReferenceError: FunctionName is not defined
奇怪的是,当我复制/粘贴相同的JavaScript代码时,将它放在eval()中;并在控制台中输入,它完美无缺!
那么为什么会发生这种情况以及如何解决呢?
答案 0 :(得分:0)
This jsFiddle与您拥有的代码完美配合。但是如果在创建页面后附加它会导致问题,我会发现它会导致问题,因为在页面加载完成后附加内联脚本时不会执行。
如果你追加它,如果你需要在html里面找到类似的问题,请参考this帖子。但是,如果您可以将脚本移动到其他文件中,我建议使用jQuery getScript而不是普通的ajax。
$.getScript( "ajax/test.js", function( data, textStatus, jqxhr ) {
// ...
});
答案 1 :(得分:-1)
我认为问题是当点击事件监听器建立时,你的功能还没有被创建。
尝试将script1放在具有onClick事件的div之前。