编写for循环来创建div

时间:2013-05-08 21:07:24

标签: javascript jquery css loops

我要做的是写一个for循环来创建一定数量的div。 div的数量取决于我在数据库中的信息。例如,有15个复选框,我需要一个for循环来为用户点击的每个复选框创建一个div。我现在并不担心mysql方面的问题,我只关注for循环。

所以我有一个800px宽的主要div。假设用户单击8个复选框,我想弄清楚如何编写一个for循环,它将创建2行4个div,每个200px宽。所以每排4个div。现在div中的内容并不重要,我只需要知道如何处理这样的事情。

任何可以引导我朝着正确方向前进的想法?

以下是一些代码:

$(document).ready(function(){
    for(i = 0; i < (the number of checkboxes clicked); i++) {
        $('body').append('<div id="div'+ i +'" />');
    }
});

然后div将拥有相同的css代码,例如宽度为200px blah blah blah ...

我想我需要从数据库中单击复选框并为每个复选框创建一个div。

4 个答案:

答案 0 :(得分:1)

为什么不为此使用CSS?

<input type="hidden" id="checkboxCount" value="[# of checkboxes checked]" />

<div class='container'><!-- append HTML here--></div>

$(document).ready(function(){
    for( var i = 0; i < parseInt(document.getElementById('checkboxCount').value, 10); i++) {
        $('.container').append('<div class="ckbDiv" id="div'+ i +'" />');
    }

});

.container { width: 800px; }
.ckbDiv { float: left; width: 200px; }

答案 1 :(得分:1)

var n_checked_checkboxes = $('input[type="checkbox"]:checked').length;
for (var i = 0; i < n_checked_checkboxes; i++) {
    $('<div/>', {
        'id': 'div' + i,
        'class': 'some_class_name'
    }).appendTo('body');
}
.some_class_name {
    width: 200px;
    float: left;
}

当你有body宽度为800px float: left时,第一行会为你做第二行(4个div)

这是一个例子:http://jsfiddle.net/DvjxL/

答案 2 :(得分:0)

以下是此答案(how to count all check boxes in a form (Javascript))的略微修改版本:

<script type="text/javascript">
var inputTags = document.getElementsByTagName('input');
var checkboxCount = 0;
for (var i=0, length = inputTags.length; i<length; i++) {
     if (inputTags[i].type == 'checkbox' && inputTags[i].checked) {
         checkboxCount++;
     }
}

for(i = 0; i < checkboxCount; i++) {
    $('body').append('<div id="div'+ i +'" />');
    //morestuff, div related
}    
</script>

对所有复选框的输入进行计数并进行检查。使用该号码,您可以执行for

答案 3 :(得分:0)

在表中获得二维坐标的一般方法是这个公式:

var items = ['first','second','third',....,'tenth'];
var n = items.length; // here: 10
var columns = 4;
var rows = Math.ceil(n/columns); // = 3
for (var i=0;i<n;i++) {
    var coords = {
        row: Math.ceil((i+1)/columns), // will return something between 1 and 4
        col: i % columns, // will return something between 0 and 3
    };
    doSomeThingWithItem(items[i],coords);
}