繁体   English   中英

如何在没有onload的情况下调用函数

[英]How to call function without onload

我试图找出一种从头开始动态写入体内表格并遇到此示例代码的方法。 问题在于它使用“ onload”调用该函数。 我需要从代码循环中调用该函数以写入表。

<!DOCTYPE HTML>
<html>
<head>
<title>Untitled Document</title>

<style type="text/css">
.mytable {
border:1px solid #000000;
border-collapse:collapse;
width:200px;
}
.mytable td{
background:#cccccc;
border:1px solid #000000;
}
</style>

<script type="text/javascript">
onload=function(){
var nrCols=2;
var maxRows=4;
var nrRows=maxRows+1;
while(nrRows>maxRows){
nrRows=Number(prompt('How many rows? Maximum '+maxRows+' allowed.',''));
}
var root=document.getElementById('mydiv');
var tab=document.createElement('table');
tab.className="mytable";
var tbo=document.createElement('tbody');
var row, cell;
for(var i=0;i<nrRows;i++){
    row=document.createElement('tr');
    for(var j=0;j<nrCols;j++){
        cell=document.createElement('td');
        cell.appendChild(document.createTextNode(i+' '+j))
        row.appendChild(cell);
    }
    tbo.appendChild(row);
}
tab.appendChild(tbo);
root.appendChild(tab);
}
</script>
</head>
<body>
<div id="mydiv"></div>
</body>
</html>

我试图命名该函数并摆脱onload并从头中的脚本调用该函数,但这不起作用。

您必须将script放在html中的div 之后才能使用function foobar() ,然后再编写foobar();

这用于调用函数,但是onload=function()也可以在<head>标记中使用。 的原因是,如果它的一个功能的页面呈现在顺序和<div>在页面到达它,如果它的头部,但是所述点将不存在onload装置的页面已经完成加载。

没那么难。 但是首先,您必须隔离js并进行标记。

隔离使您可以更好地进行代码管理。 尝试这个 :

HTML:

<div id="mydiv"></div>
<button id="btn">Click</button>

JS:

writeToTable();
function writeToTable(){
var nrCols=2;
var maxRows=4;
var nrRows=maxRows+1;
while(nrRows>maxRows){
nrRows=Number(prompt('How many rows? Maximum '+maxRows+' allowed.',''));
}
var root=document.getElementById('mydiv');
var tab=document.createElement('table');
tab.className="mytable";
var tbo=document.createElement('tbody');
var row, cell;
for(var i=0;i<nrRows;i++){
    row=document.createElement('tr');
    for(var j=0;j<nrCols;j++){
        cell=document.createElement('td');
        cell.appendChild(document.createTextNode(i+' '+j))
        row.appendChild(cell);
    }
    tbo.appendChild(row);
}
tab.appendChild(tbo);
root.appendChild(tab);
}

在此处找到有效的解决方案: http : //jsfiddle.net/tx5Xd/

不确定我是否完全理解问题,但是在标头中定义函数,然后在html文件末尾调用函数。

我处理这种情况的首选方式是:a)仍然使用onload ,因为这是浏览器通知您内容已完成加载的好方法; 但是b)继续并将您的代码分解为自己的函数,但是只需从onload处理程序中调用该函数即可 例如:

function myFunction(param1, param2) {
    // do your important stuff here
}

window.addEventListener('load', function(){
    myFunction('foo', 'bar');
}, false);

这样,您的函数直到页面完成加载后仍不会被调用,但是您也可以在以后根据需要单独调用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM