如何在 JS 中的页面加载时调用函数
How to call function on page load in JS?
我有一个看起来像这样的js函数
function showProducts(){
document.getElementById("shopList").innerHTML = "<ul><li>Test Text</li></ul>";
}
这是一个必须显示我的一系列产品的功能。我已经在我的 html 页面中制作了一个带有id="shopList"
的div
<div id="shopList">
</div>
但是如何调用函数来显示div 中的文本呢?当我使用它作为我的身体标签时,它可以工作,但我不允许在我的 html 中编写任何 js 代码或使用 onload 或 onclick。我尝试与听众一起做将近 4 个小时,但我仍然没有找到解决方案。有人可以帮助我吗?
<body onload="showProducts()">
使用纯 JavaScript:
window.onload = function(){
};
(或
function doLoad() {
//Do stuff on load
}
window.onload = doLoad;
使用Jquery
$(document).ready(function(){
});
这对听众来说并不难。这是一个解决方案(不是跨浏览器):
document.addEventListener("DOMContentLoaded", showProducts);
实际上,分配给onload
只是与听众一起做的简写。 这应该有效,尽管我还没有测试过。
window.addEventListener("load", showProducts);
使用 Jquery,您可以执行以下操作:
$(document).ready(function(){
showProducts();
});
它一直等到页面加载完毕,然后执行函数。您只需将其放在外部.js文件中,然后将其包含在您的页面中即可。
(对于因为是Jquery而对这个答案投反对票的人,他说他不能使用onload(),所以我只是提到了这个选项。
只需将脚本放在底部:
<body>
...
<script type="text/javascript">
myFunction();
</script>
</body>
John Resig的简化版本,来自"Pro JavaScript Techniques"。这取决于addEvent。
var ready = ( function () {
function ready( f ) {
if( ready.done ) return f();
if( ready.timer ) {
ready.ready.push(f);
} else {
addEvent( window, "load", isDOMReady );
ready.ready = [ f ];
ready.timer = setInterval(isDOMReady, 13);
}
};
function isDOMReady() {
if( ready.done ) return false;
if( document && document.getElementsByTagName && document.getElementById && document.body ) {
clearInterval( ready.timer );
ready.timer = null;
for( var i = 0; i < ready.ready.length; i++ ) {
ready.ready[i]();
}
ready.ready = null;
ready.done = true;
}
}
return ready;
})();
window.onload可以工作,但它是一个不同的野兽。 jQuery的$(document).ready()在大多数情况下要复杂得多,也更好。
给定"HTML 中没有脚本"和"没有 onload 或 onclick 侦听器"的标准,您可以将函数放入单独的文件中,并从页面底部的脚本元素运行它:
<script type="text/javascript" src="showproducts.js"></script>
所以现在页面中没有脚本,也没有侦听器。当元素添加到 DOM 时,代码将执行,所以只要它在相关的 DIV 之后,你就没问题。
顺便说一下,你甚至不需要函数,你可以将函数体中的语句放入文件中。
- 在调用speak之前预加载Web Speech API
- BrowserId登录请求在文档加载时被调用
- 页面加载后的Ajax调用
- 当库在页脚中加载时,基于PHP条件调用Javascript
- 为什么我的ajax在提交用@HtmlRenderPartial加载的表单时只调用fire一次
- 使用多个依赖项加载只进行一次AJAX调用
- 如何重新加载调用部分视图的操作
- 也需要为“加载”调用脚本,而不仅仅是在“模糊”上
- 加载调用仅适用于第一个节点,不适用于叶
- 如何在不加载调用的页面的情况下调用 URL
- 页面加载调用函数上的 Angularjs
- 页面加载调用后的谷歌地图api
- Jquery加载不回答通过加载调用
- Jquery加载调用结果为空查询字符串
- ASP.Net增量页面加载调用Javascript
- 我如何从页面加载调用ajax单击事件
- 在HTML中加载/调用javascript的适当位置
- 如何停止Ajax映像加载调用新函数
- 页面加载调用javascript函数
- JSF中的页面加载调用命令按钮