Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.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构建表的循环帮助吗_Javascript_Html_Loops_Html Table - Fatal编程技术网

需要使用Javascript构建表的循环帮助吗

需要使用Javascript构建表的循环帮助吗,javascript,html,loops,html-table,Javascript,Html,Loops,Html Table,以下是我的功能: function CreateResultsTable(bps, incs) { var table = document.createElement('table'); var str = '<table border=1>'; str += '<tr><th></th><th>1</th><th>2</th><th>3</th>&l

以下是我的功能:

function CreateResultsTable(bps, incs) {
    var table = document.createElement('table');
    var str = '<table border=1>';
    str += '<tr><th></th><th>1</th><th>2</th><th>3</th><th>4</th><th>5</th></tr>';

    var i = 0;

    // up
    for (i = 0; i < incs; i++) {
        var num = (incs - i) * bps;
        var newStr = num.toString();
        str += '<tr><th>' + newStr + '</th><td>100,000</td><td>100,000</td><td>100,000</td><td>100,000</td><td>100,000</td></tr>';
    }
    i = 0;

    //down
    for (i = incs; i > 0; i--) {
        var num = (incs - i) * bps;
        var newStr = '-' + num.toString();
        str += '<tr><th>' + newStr + '</th><td>100,000</td><td>100,000</td><td>100,000</td><td>100,000</td><td>100,000</td></tr>';
    }
    return str;
}
函数CreateResultsTable(bps、incs){
var table=document.createElement('table');
var-str='';
str+='12345';
var i=0;
//向上
对于(i=0;i0;i--){
var num=(增量-i)*个基点;
var newStr='-'+num.toString();
str+=''+newStr+'100001000010000100001000000000';
}
返回str;
}
我想说的是我传入了
{bps=25,incs=4}
。它应始终创建两倍于INC的行数(在标题行下方)。因此,对于incs=
4
和bps=
25
,它应该按照顺序创建第一个td=
100、75、50、25、-25、-50、-75、-100的行

它现在所做的是创建它们,比如
100,75,50,25,-0,-25,-50
——就是这样


我做错了什么

您的最后一个循环需要是
=
,而不仅仅是
,然后开始一个较低的循环,如下所示:

for (i = incs-1; i >= 0; i--) {
function CreateResultsTable(bps, incs) {
    var str = '<table border="1">';
    str += '<tr><th></th><th>1</th><th>2</th><th>3</th><th>4</th><th>5</th></tr>';

    for (var i = incs*bps, low = -i; i >= low; i-=bps) {
        if (i == 0) continue; //exclude the 0 row
        str += '<tr><th>' + i + '</th><td>100,000</td><td>100,000</td><td>100,000</td><td>100,000</td><td>100,000</td></tr>';
    }
    str += '</table>';
    return str;
}
,唯一的其他更改是在末尾添加
,并在边框属性上加引号


不过,有一种更简单的方法可以实现这一点,如果需要,可以使用单个循环并排除
0
,如下所示:

for (i = incs-1; i >= 0; i--) {
function CreateResultsTable(bps, incs) {
    var str = '<table border="1">';
    str += '<tr><th></th><th>1</th><th>2</th><th>3</th><th>4</th><th>5</th></tr>';

    for (var i = incs*bps, low = -i; i >= low; i-=bps) {
        if (i == 0) continue; //exclude the 0 row
        str += '<tr><th>' + i + '</th><td>100,000</td><td>100,000</td><td>100,000</td><td>100,000</td><td>100,000</td></tr>';
    }
    str += '</table>';
    return str;
}
函数CreateResultsTable(bps、incs){
var-str='';
str+='12345';
对于(var i=incs*bps,low=-i;i>=low;i-=bps){
如果(i==0)继续;//排除0行
str+=''+i+'10000100001000010000100001000000000';
}
str+='';
返回str;
}

,这只是一种更简单/更便宜的单循环方式或做同样的事情。

您的最后一个循环需要是
=
,而不仅仅是
,并从一个更低的开始,如下所示:

for (i = incs-1; i >= 0; i--) {
function CreateResultsTable(bps, incs) {
    var str = '<table border="1">';
    str += '<tr><th></th><th>1</th><th>2</th><th>3</th><th>4</th><th>5</th></tr>';

    for (var i = incs*bps, low = -i; i >= low; i-=bps) {
        if (i == 0) continue; //exclude the 0 row
        str += '<tr><th>' + i + '</th><td>100,000</td><td>100,000</td><td>100,000</td><td>100,000</td><td>100,000</td></tr>';
    }
    str += '</table>';
    return str;
}
,唯一的其他更改是在末尾添加
,并在边框属性上加引号


不过,有一种更简单的方法可以实现这一点,如果需要,可以使用单个循环并排除
0
,如下所示:

for (i = incs-1; i >= 0; i--) {
function CreateResultsTable(bps, incs) {
    var str = '<table border="1">';
    str += '<tr><th></th><th>1</th><th>2</th><th>3</th><th>4</th><th>5</th></tr>';

    for (var i = incs*bps, low = -i; i >= low; i-=bps) {
        if (i == 0) continue; //exclude the 0 row
        str += '<tr><th>' + i + '</th><td>100,000</td><td>100,000</td><td>100,000</td><td>100,000</td><td>100,000</td></tr>';
    }
    str += '</table>';
    return str;
}
函数CreateResultsTable(bps、incs){
var-str='';
str+='12345';
对于(var i=incs*bps,low=-i;i>=low;i-=bps){
如果(i==0)继续;//排除0行
str+=''+i+'10000100001000010000100001000000000';
}
str+='';
返回str;
}

,这只是一种更简单/更便宜的单循环方式或做同样的事情。

你必须从
incs-1开始,然后计数到零。所以函数应该是这样的

function CreateResultsTable(bps, incs) {
        var table = document.createElement('table');
        var str = '<table border=1>';
        str += '<tr><th></th><th>1</th><th>2</th><th>3</th><th>4</th><th>5</th></tr>';

        var i = 0;

        // up
        for (i = 0; i < incs; i++) {
            var num = (incs - i) * bps;
            var newStr = num.toString();
            str += '<tr><th>' + newStr + '</th><td>100,000</td><td>100,000</td><td>100,000</td><td>100,000</td><td>100,000</td></tr>';
        }
        i = 0;

        //down
        for (i = incs - 1; i >= 0; i--) {
            var num = (incs - i) * bps;
            var newStr = '-' + num.toString();
            str += '<tr><th>' + newStr + '</th><td>100,000</td><td>100,000</td><td>100,000</td><td>100,000</td><td>100,000</td></tr>';
        }
        return str;
    }
函数CreateResultsTable(bps、incs){
var table=document.createElement('table');
var-str='';
str+='12345';
var i=0;
//向上
对于(i=0;i=0;i--){
var num=(增量-i)*个基点;
var newStr='-'+num.toString();
str+=''+newStr+'100001000010000100001000000000';
}
返回str;
}

您必须从
incs-1开始,然后计数到零。所以函数应该是这样的

function CreateResultsTable(bps, incs) {
        var table = document.createElement('table');
        var str = '<table border=1>';
        str += '<tr><th></th><th>1</th><th>2</th><th>3</th><th>4</th><th>5</th></tr>';

        var i = 0;

        // up
        for (i = 0; i < incs; i++) {
            var num = (incs - i) * bps;
            var newStr = num.toString();
            str += '<tr><th>' + newStr + '</th><td>100,000</td><td>100,000</td><td>100,000</td><td>100,000</td><td>100,000</td></tr>';
        }
        i = 0;

        //down
        for (i = incs - 1; i >= 0; i--) {
            var num = (incs - i) * bps;
            var newStr = '-' + num.toString();
            str += '<tr><th>' + newStr + '</th><td>100,000</td><td>100,000</td><td>100,000</td><td>100,000</td><td>100,000</td></tr>';
        }
        return str;
    }
函数CreateResultsTable(bps、incs){
var table=document.createElement('table');
var-str='';
str+='12345';
var i=0;
//向上
对于(i=0;i=0;i--){
var num=(增量-i)*个基点;
var newStr='-'+num.toString();
str+=''+newStr+'100001000010000100001000000000';
}
返回str;
}

不要忘记关闭
元素。不要试图用字符串构建表的内部。使用createElement和friends。IE真的不喜欢更改表位的innerHTML。@David-你说的是真的,但他没有这样做,他正在创建一个完整的表,所以虽然我也不喜欢它……但在IE.Argh中这不是问题。我看了第二行,没有注意到结果从未被使用过。不要忘记关闭
table
元素。不要试图用字符串构建表的内部。使用createElement和friends。IE真的不喜欢更改表位的innerHTML。@David-你说的是真的,但他没有这样做,他正在创建一个完整的表,所以虽然我也不喜欢它……但在IE.Argh中这不是问题。我看了第二行,没有注意到结果从来没有被使用过。所以他会得到
100,75,50,25,-0,-25,-50 100
,而不是
100,75,50,25,-25,-50 100
@gregor-woops你是对的,我从问题中误读了他的预期结果(在阅读时与他的实际结果混在一起),答案/演示更新。所以他会得到
100,75,50,25,-0,-25,-50 100
和not
100,75,50,25,-25,-50 100
@gregor-woops你是对的,我误解了他对问题的预期结果(阅读时与实际结果混在一起),答案/演示更新。虽然这确实解决了问题中的问题,但有一种更简单的方法,下面是我的答案:)虽然这确实解决了问题中的问题,但有一种更简单的方法,请参见下面的答案:)