我有一个js函数看起来像这样
function showProducts(){
document.getElementById("shopList").innerHTML = "<ul><li>Test Text</li></ul>";
}
这是一个已经表现出我的产品阵列功能。 我做了与DIV id="shopList"
在我的html页面
<div id="shopList">
</div>
但我怎么能调用函数来显示我在div的文本? 它的工作原理,当我用这个作为我的身体标记,但我不能写任何的js代码在我的HTML或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文件并将其包含在你的页面。
(对于人downvoting这个答案,因为它是jQuery的,他说他不能使用的onload(),所以我刚才提到的这个选项。)
只需将底部的脚本:
<body>
...
<script type="text/javascript">
myFunction();
</script>
</body>
约翰Resig的简化版本,从“临JavaScript的技术”。 这取决于的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的$(文件)。就绪()是在大多数情况下要复杂得多好。
鉴于你“中的HTML没有脚本”和“无onload事件或听众的onclick”的标准,就可以把功能到一个单独的文件,并在页面底部的脚本元素运行:
<script type="text/javascript" src="showproducts.js"></script>
所以现在你在页面并没有听众没有脚本。 当元素被添加到DOM,所以只要是相关的DIV之后,你没事的代码会被执行。
顺便说一句,你甚至不需要一个功能,你可以把语句从函数体到文件中。