0

我在default.html中有以下页面元素:

<div id ="content">
   <div id="output"></div>
</div>

default.js 中:

...     
args.setPromise(WinJS.UI.processAll().done(function()
{
   var theOutput = document.getElementById("output");
   theOutput.innerText = "This is the output";
}));
....

这成功地生成了只有文本“这是输出”的应用程序

但是如果我把它移到一个新的脚本script.js 中:

(function ()
{
  "use strict";

  var theOutput = document.getElementById("output");
  theOutput.innerText = "This is the output";
}()); 

并在 default.html 中添加 script.js 作为脚本引用:

<script src="/js/script.js"></script><script src="/js/script.js"></script>

我得到错误

JavaScript 运行时错误:无法设置未定义或空引用的属性“innerText”

如何在 default.js 之外的其他脚本中访问输出 div?

4

2 回答 2

0

事实证明,script.js 需要等到页面元素被完全处理完。以下代码运行良好:

(function ()
{
   "use strict";
   WinJS.Utilities.ready(function ()
   {
     var theOutput = document.getElementById("output");
     theOutput.innerText = "This is the output";
   });
}());
于 2012-09-30T15:36:24.283 回答
0

您还可以处理 DOMContentLoaded 事件,该事件会在 DOM 构建后触发(尽管图像可能尚未完全加载)。这就是我在很多基于画布的 Windows 应用商店游戏中所做的。

将此添加到主函数中:

document.addEventListener("DOMContentLoaded", initialize, false);

然后只需执行您想要在初始化中触发的代码:

function initialize() {
    //Init Canvas
    canvas = document.getElementById("canvas");
    ctx = canvas.getContext("2d");
于 2012-10-03T14:59:40.113 回答