首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这个for循环有什么问题?

这个for循环有什么问题?
EN

Stack Overflow用户
提问于 2013-01-08 20:30:20
回答 3查看 108关注 0票数 1

嗨,伙计们,我有一个数组,我正在试图附加到DOM!以下是代码:

代码语言:javascript
复制
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。

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

代码语言:javascript
复制
<div class="col-1">
    <p>Some text</p>
</div>

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

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-08 21:38:06

我认为您正在尝试分别打印每一列,因此而不是逐行打印。试试这个:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2013-01-08 20:41:24

如果data没有包含正确的列数,您将得到错误,它将停止添加到您的页面。您可以使用以下内容确保正确初始化列:

代码语言:javascript
复制
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);
    }
}

...But很可能一开始就不支持这种情况,您应该抛出一个错误:

代码语言:javascript
复制
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
}
票数 0
EN

Stack Overflow用户

发布于 2013-01-08 20:42:43

可能是您的数组没有12列,所以不要将列定义为全局变量,尝试如下

代码语言:javascript
复制
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访问。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14223464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档