Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在没有onload的情况下调用函数_Javascript - Fatal编程技术网

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

Javascript 如何在没有onload的情况下调用函数,javascript,Javascript,我试图找到一种从头部动态写入主体中的表的方法,遇到了这个示例代码。问题是它使用“onload”调用函数。我需要从代码中的循环中调用函数来写入表 <!DOCTYPE HTML> <html> <head> <title>Untitled Document</title> <style type="text/css"> .mytable { border:1px solid #000000; border-collapse:c

我试图找到一种从头部动态写入主体中的表的方法,遇到了这个示例代码。问题是它使用“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>

无标题文件
.我的桌子{
边框:1px实心#000000;
边界塌陷:塌陷;
宽度:200px;
}
.mytable td{
背景:#中交;;
边框:1px实心#000000;
}
onload=函数(){
var-nrCols=2;
var maxRows=4;
var nrRows=maxrrows+1;
while(nrRows>maxrrows){
nrRows=数量(提示(“有多少行?允许的最大行数“+maxRows+”,”);
}
var root=document.getElementById('mydiv');
var tab=document.createElement('table');
tab.className=“mytable”;
var tbo=document.createElement('tbody');
var行、单元格;

对于(var i=0;i您必须将
脚本
放在html中的div之后才能使用
函数foobar()
,然后写入
foobar();


这是用于调用函数的,但是
onload=function()
也可以在
标记中工作。原因是如果它是页面按顺序呈现的一个函数,并且如果它在头部,那么
在页面到达时将不存在,但是
onload
意味着在页面完成加载后

您必须将
脚本
放在之后ong>html中的div,使用
函数foobar()
然后写入
foobar();


这是用于调用函数的,但是
onload=function()
也可以在
标签中工作。原因是如果它是页面按顺序呈现的一个函数,并且如果它在头部,则
在页面到达时将不存在,但是
onload
意味着在页面完成加载后

我不确定是否完全理解这个问题,但定义您的位置函数头,然后在html文件的末尾调用函数。

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

这并不难。但首先必须分离js并标记

隔离允许您更好地管理代码。请尝试以下操作:

HTML:

<div id="mydiv"></div>
<button id="btn">Click</button>
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);
}

点击
JS:

<div id="mydiv"></div>
<button id="btn">Click</button>
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);
}
writeTable();
函数writeTable(){
var-nrCols=2;
var maxRows=4;
var nrRows=maxrrows+1;
while(nrRows>maxrrows){
nrRows=数量(提示(“有多少行?允许的最大行数“+maxRows+”,”);
}
var root=document.getElementById('mydiv');
var tab=document.createElement('table');
tab.className=“mytable”;
var tbo=document.createElement('tbody');
var行、单元格;

对于(var i=0;i来说,这并不难。但首先,您必须分离js并进行标记

隔离允许您更好地管理代码。请尝试以下操作:

HTML:

<div id="mydiv"></div>
<button id="btn">Click</button>
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);
}

点击
JS:

<div id="mydiv"></div>
<button id="btn">Click</button>
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);
}
writeTable();
函数writeTable(){
var-nrCols=2;
var maxRows=4;
var nrRows=maxrrows+1;
while(nrRows>maxrrows){
nrRows=数量(提示(“有多少行?允许的最大行数“+maxRows+”,”);
}
var root=document.getElementById('mydiv');
var tab=document.createElement('table');
tab.className=“mytable”;
var tbo=document.createElement('tbody');
var行、单元格;

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

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

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

这样,在页面加载完成之前,您的函数仍然不会被调用,但如果您愿意,您也可以稍后单独调用它。

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

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

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

这样,在页面加载完成之前,您的函数仍然不会被调用,但如果愿意,您也可以稍后单独调用。

否我粘贴的代码工作正常,但我需要修改它以满足我的要求。我使用该示例的原因是脚本位于头部,这是我的要求的一部分。如果我将html中div之后的ipt如何从头部调用函数?好的,这就是我遇到的问题。我需要从头部代码中的循环内部调用函数,这样我就不能使用onload=function()。我的意思是,你的解决方案是我遇到的一个非常棘手的问题,除非我不理解你。1)我不能将脚本放在主体的div之后,因为这样我就不能从头部调用函数2)我不能在头部使用onload函数,因为它只会自行运行。我需要在循环中多次调用该函数在运行时调用函数。@user2721465然后按如下方式命名函数:
function foo()
,并在程序中按如下方式调用它:
foo()
除非我遗漏了什么……不,我粘贴的代码工作正常,但我需要修改它以满足我的需求。我使用该示例的原因是脚本在头部,这是我需求的一部分。如果我将脚本放在html的div之后,我如何从头部调用函数?好的,这就是我遇到的问题。我需要从头部代码中的循环内部调用函数,这样我就不能使用onload=function()。我的意思是,你的解决方案是我面临的一个非常大的问题,除非我不理解你。1)我不能将脚本放在主体的div之后,因为这样我就不能从头部调用函数2)我不能在头部使用onload函数,因为它只会自行运行。我需要从loo内部调用函数