1

大家好,我有一个数组,我正在尝试附加到 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>

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

谢谢!

4

3 回答 3

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);
    }
}
于 2013-01-08T21:38:06.587 回答
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 访问。

于 2013-01-08T20:42:43.887 回答
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
}
于 2013-01-08T20:41:24.857 回答