javascript - 基本 javascript 警报在英特尔 XDK 代码编辑器中不起作用

标签 javascript html intel-xdk

我刚开始一个新的空白英特尔项目,我什至还没有开始编码。我只是设置我的文件树并确保 html 和 javascript 页面通过正确的 anchor 和脚本路径连接。虽然我的第一个 .js 文件不起作用。

我附上了测试代码和错误的屏幕截图。我知道语法是正确的,因为当我把它放在 <script> 中时它起作用了index.html 文件中的标签。 我收到“文档未定义”和“警报未定义”错误或 js 页面。我不知道那是什么意思。

我认为索引文件中的脚本标签 src 路径不正确,但英特尔在索引页上提供的注释掉的模板脚本标签中的所有路径都是相对的,所以我为什么要使用绝对路径?

我的路径是:js/Test.js,它是主体之前的最后一个脚本标记。

js file with errors

enter image description here Index.html文件

*****更新****

所以我已经尝试了一些方法,但仍然无法正常工作,但我已经设法将我的错误减少到一个莫名其妙的“缺少分号”,如果我放置它,它将变成一个“不必要的分号”错误。 按照第一个屏幕截图的任何方式,您都会看到我没有将文档对象放在显式声明的变量中。一旦我这样做并通过点语法而不是等号访问它,我就不再收到错误。我包含此屏幕截图以显示我进行更改之前的工作。 not using var keyword was giving me error

所以我接下来遇到的问题是,除非每个函数或 dom 对象都用“Var”声明,否则我会得到一个错误。这包括 alert() 函数,我认为我从未见过需要以这种方式声明的函数,但我给了代码编辑器它想要的东西,最后一张截图就是结果。它不起作用,但我没有得到以前的错误,除了丢失/不必要的分号悖论。删除它或包含它会引发错误。 No errors, but not working

最佳答案

JavaScript 可以在 HTML 之前或之后加载,但是根据您的操作方式,完成方式会略有不同。

例如,如果您希望将 JavaScript 文件包含在 HTML 文件的 head 中,那么您必须将 JavaScript 代码包装成DOMContentLoaded 或 jQuery 的 $(document).ready()

使用 window.onload 的常见误解不会解决元素未正确加载的问题。

Mozilla 开发者网络在 this 上声明页:

The DOMContentLoaded event is fired when the initial HTML document has been completely loaded and parsed, without waiting for stylesheets, images, and subframes to finish loading. A very different event - load - should be used only to detect a fully-loaded page. It is an incredibly popular mistake to use load where DOMContentLoaded would be much more appropriate, so be cautious.

这句话本身应该证明 onload 不应依赖如果您希望在开始操作之前正确加载完整的 DOM。相反,您应该执行以下操作:

Vanilla

document.addEventListener("DOMContentLoaded", function (e) {
    /** DOM has been fully loaded here, so manipulation can begin. **/
    /** Your code here. **/
});

jQuery

$(document).ready(function () {
    /** DOM has been fully loaded here, so manipulation can begin. **/
    /** Your code here. **/
});

点击this链接以查看 vanilla 和 jQuery 之间的区别。

加载 JavaScript 的第二种方法是将所有脚本标记放在正文中,但在所有 HTML 之后,这样可以保证在 HTML 之后加载。

示例

试试我快速编写的这个工作示例。

HTML

HTMLbody 标记中的内容替换为以下内容:

<button id="myJsTest">Click Me!</button>
<div id="clickCounter">Click Count: 0</div>

用以下内容替换您的 JavaScript 的内容:

JavaScript

document.addEventListener("DOMContentLoaded", function() {
    var clickCount = 0;

    document.getElementById("myJsTest").addEventListener("click", function() {
        clickCount++;

        document.getElementById("clickCounter").innerText = "Click Count: " + clickCount;
    });
});

然后使用 Intel XDK 中的Emulate 选项卡对其进行测试。

附加信息

当我使用 Intel XDK 时遇到错误,我会快速将文件加载到浏览器并检查控制台。对于消除那些讨厌的小错误,它可能是一种非常有用且有效的方法。

尝试使用 window.alert 作为 alert 是在 window 对象中定义的。

关于javascript - 基本 javascript 警报在英特尔 XDK 代码编辑器中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34702332/

相关文章:

javascript - 单击 slider 图像以在 javascript 中执行功能

javascript - Intel XDK watchAcceleration 方法和同名 Cordova 方法有什么区别?

javascript - 如何在JS中录制div的视频

javascript - 包括 javascripts 不工作

javascript - 如果未连接到确定的网络,则阻止访问

php - 为什么我无法获取此文本区域的值?

html - float 框旁边列表的左边距

javascript - 如何在原生 Android 应用程序上从 JS 中的 php 获取数据?

android - 使用英特尔 XDK 的跨平台样式

javascript - JQuery - $ 未定义