在HTML中实现JS
Implement JS in HTML
这应该很容易,但尽管应该很容易,我还是解决不了这个问题。
如果我在在线编辑器中键入以下HTML和JS代码,一切都很好,但如果我把它输入到我的(离线)编辑器中,它就不起作用了。这是在线代码:http://jsbin.com/kenurunahu/1/edit?html,js,输出)
我打赌这与加载顺序和文件的链接方式有关。
这就是我的(lokal)HTML文件的样子(文件链接的地方):
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" content="Index.css">
<script src="Script.js"></script>
</head>
<body>
<p id="demo">
something
</p>
</body>
</html>
非常感谢您的帮助!
[更新]Firefox和Chrome显示JS文件。有时我会收到一条错误消息,上面写着"innerHTML为null",但如果我在控制台中写入相同的代码,一切都会正常工作。
在浏览器完全加载html dom之前加载js脚本时会出现错误。测试的一个简单解决方案是将脚本include放在html页面的末尾,如下所示:
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" content="Index.css">
</head>
<body>
<p id="demo">
something
</p>
<script src="Script.js"></script>
</body>
</html>
一个更好的解决方案是只有在dom完全加载时才运行脚本。例如车身加载事件:
<body onload="yourFunc()">
或者,通过只使用js代码,例如使用jquery ready函数,或者通过编写一个应该在所有主要浏览器上工作的简单自定义处理程序,事件会更好:
document.addEventListener("DOMContentLoaded", function(event) {
//call your func here
});
希望能有所帮助。
几个猜测:
-
资本化很重要。如果文件名为
script.js
,则不要链接到Script.js
-
你的js文件和
index.html
文档在同一个文件夹中吗?因为你就是这么说的。
通常,我们将文件结构安排为这样:
public_html
- css
- js
- img
- inc
如果样式/脚本存储在子文件夹中,如js
和css
,则必须将引用修改为:
<link rel="stylesheet" content="css/Index.css">
<script src="js/Script.js"></script>
作为一种好的做法,您的脚本应该放在body
标记的末尾。外部脚本正在阻塞,因此我们不将它们放在顶部是有意义的。此外,当位于顶部的script
运行时,您的DOM可能还没有准备好,这意味着脚本试图访问的任何元素可能根本不在DOM中,这会导致您的错误。
因此,所有的脚本都应该位于body
标记的末尾。这样,当脚本加载并运行时,就可以确保DOM已经准备好了。
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" content="Index.css">
</head>
<body>
<p id="demo">
something
</p>
<script src="Script.js"></script>
</body>
</html>
- HTML中两种JS实现之间的差异
- 使用 JavaScript/Node.js 实现插件架构
- 如何使用结构 JS 实现对比度
- 通过JS实现面板可见性
- 我怎样才能用 Require.js 实现 TinyMCE
- 使用Skrollr.js实现水平效果
- 基本 JS 实现基本数学来转换值
- Prototypejs $super的原生 JS 实现
- 使用 JS 实现 HTML 最小化器插件
- 分析JS实现中的XLS(Excel)文件
- 如何使用paper.js实现多点触摸交互
- 如何使用sinon.js实现mock/stub回调函数
- React.js-实现组件排序
- 是否可以用Ext.js实现可移动工具栏,如果可以,如何用我的代码实现
- 棘轮与角js实现
- JavaScript/List.js:实现模糊搜索
- 尝试使用cucumber.js实现页面对象模型时出错
- 如何使用Thinktecture.IdentityServer.v2和Node.js实现WS-Federation
- 使用Node.js实现网页自动化
- 使用MVC/Backbone.js实现复合模式