首页 > 解决方案 > 多个 JavaScript 函数未运行

问题描述

我正在尝试制作一个允许您使用文本编辑器的应用程序。您可以在文本块中输入任何内容。您可以对所述文本块做两件事:
a)在新的 about:blank 选项卡中将文本作为 html 页面运行,或者
b)将文本另存为 .html
出于某种原因,但是,当我尝试实现保存功能时,这两个函数都不会加载。如果我进入 JS 控制台,单击保存按钮时会显示此错误:

"Uncaught ReferenceError: saveAsFile is not defined (temp.html,1)"

当我将它们分成两个<script>块时,我可以让保存功能工作。但是,当我这样做时,“在新选项卡中运行”功能不再起作用。这完全令人困惑。
之前用过多个功能,不知道为什么突然不行了。有人可以帮忙吗?这是我的代码:

<script>
function run() {
var codeTab = window.open("" _blank);
var codeRun = document.getElementById("code").value;
codeTab.document.write(codeRun);
}
</script>
<script>
/*i stole-i mean used-this code from someone else*/
function saveAsFile() {
var textToSave = document.getElementById("code").value;

var hiddenElement = document.createElement('a');

hiddenElement.href = 'data:attachment/text,' + encodeURI(textToSave);
hiddenElement.target = '_blank';
hiddenElement.download = 'save.html';
hiddenElement.click();
}
</script>

标签: htmljavascript

解决方案


在第 3 行,您有window.open("" _blank);. 应该是window.open("_blank");

我也看不到任何地方saveAs()被调用(或定义)。它可能被调用codeRun吗?请参阅下面对我有用的代码。

<textarea id="code">

</textarea>
<button onclick="run();">Run</button>
<button onclick="saveAsFile();">Save</button>

<script>
  function run() {
    var codeTab = window.open("_blank");
    var codeRun = document.getElementById("code").value;
    codeTab.document.write(codeRun);
  }

  /*i stole-i mean used-this code from someone else*/
  function saveAsFile() {
    var textToSave = document.getElementById("code").value;

    var hiddenElement = document.createElement('a');

    hiddenElement.href = 'data:attachment/text,' + encodeURI(textToSave);
    hiddenElement.target = '_blank';
    hiddenElement.download = 'save.html';
    hiddenElement.click();
  }
</script>

推荐阅读