这个for循环有什么问题?

时间:2013-01-08 20:30:20

标签: javascript jquery arrays for-loop

大家好我有一个数组,我正试图附加到DOM! 这是代码:

function inputFeedContent(data){
    for(var k=0; k < columns; k++) {
        var col = "<div class='col-1'>";
        for(var j=0; j < data.sample[k].length; j++) {
            col += "<p>"+data.sample[k][j]+"</p>";
        }
        col += "</div>";
        $('.sliding-window').append(col);
    }
}

其中 = 12。

问题是我只得到其中的五个:

<div class="col-1">
    <p>Some text</p>
</div>

我在这里做错了什么?请记住我是菜鸟:)

谢谢!

3 个答案:

答案 0 :(得分:1)

我认为你试图分别打印每一列,因此不是一排一排。 试试这个:

function inputFeedContent(data) {
    for(var k=0; k < columns; k++) {
     var col = "<div class='col-1'>";
     for(var j=0; j < data.sample.length; j++) {
        col += "<p>"+data.sample[j][k]+"</p>";
     }
     col += "</div>";
     $('.sliding-window').append(col);
    }
}

答案 1 :(得分:0)

如果data不包含正确数量的列,您将收到错误,并且它将停止添加到您的网页。您可以确保使用以下内容正确初始化列:

function inputFeedContent(data){
    var sampleData = data.sample || [];
    for(var k=0; k < columns; k++) {
        var col = "<div class='col-1'>";
        var columnData = sampleData[k] || [];

        for(var j=0; j < columnData.length; j++) {
            col += "<p>"+columnData[j]+"</p>";
        }
        col += "</div>";
        $('.sliding-window').append(col);
    }
}

...但是可能不应该支持这种情况,你应该抛出一个错误:

function inputFeedContent(data){
    var sampleData = data.sample || [];
    if(sampleData.length != columns){ 
        throw "inputFeedContent:  Sample data does not have the right number of columns.";
    }

    ..//Your code
}

答案 2 :(得分:0)

可能是你的数组没有12列,所以不要将列定义为全局变量 试试这个

function inputFeedContent(data){
var col=[];
for(var k=0; k < data.sample.length; k++) {

       col.push("<div class='col-1'>");
        for(var j=0; j < data.sample[k].length; j++) {
            col.push("<p>"+data.sample[k][j]+"</p>");
        }
        col.push("</div>");

    }
$('.sliding-window').append(col.join(''));
}

我还建议你避免字符串连接,因为它在循环中效率不高,并且通过将它保持在循环之外来进行dom访问。