Javascript 如何使用jQuery创建具有唯一高度的数组和div?

Javascript 如何使用jQuery创建具有唯一高度的数组和div?,javascript,jquery,arrays,dom-manipulation,Javascript,Jquery,Arrays,Dom Manipulation,我的图表需要100个小div,每次我生成它们时,它们都显示为相同的高度;数组中的最后一个值 var valuesG = new Array(100); for (i = 0; i < valuesG.length; i++ ) { valuesG[i] = Math.floor(Math.random() * 101); $("#second").append("<div class='single'></div>"); $(".sin

我的图表需要100个小div,每次我生成它们时,它们都显示为相同的高度;数组中的最后一个值

var valuesG = new Array(100);
for (i = 0; i < valuesG.length; i++ ) {
    valuesG[i] = Math.floor(Math.random() * 101);   
    $("#second").append("<div class='single'></div>");
    $(".single").css('height', valuesG[i])
}
var-valuesG=新数组(100);
对于(i=0;i

知道为什么会发生这种情况吗?

您正在将新高度应用于每个迭代中的所有
。单个
元素。在上一次迭代中,它们最终具有相同的高度

你可以这样做:

$('<div class="single">')
    .css('height', valuesG[i])
    .appendTo($('#second'));
$(“”)
.css('height',valuesG[i])
.appendTo($(#second');
此外,您的代码效率不高,请查看以下内容:

    var valuesG = [], //array literal
        $elements = $(); //empty jQuery object

    for (var i = 0; i < 100; i++) { //we don't have to query array length each iteration
        valuesG[i] = Math.floor(Math.random()*101); 

        //collect the elements into a jQuery object
        $elements = $elements.add($('<div class="single">').css('height', valuesG[i]));
    }

    $elements.appendTo($("#second")); //insert to DOM once - much quicker
var-valuesG=[],//数组文字
$elements=$()//空jQuery对象
对于(var i=0;i<100;i++){//我们不必每次迭代都查询数组长度
valuesG[i]=Math.floor(Math.random()*101);
//将元素收集到jQuery对象中
$elements=$elements.add($('').css('height',valuesG[i]);
}
$elements.appendTo($(“#秒”)//插入DOM一次-更快

当前,您选择的所有元素都是类
单个
。要获得所需的效果,请按如下所示的方式使用该方法

请注意,生成的高度不是唯一的,而是随机的。有可能存在两种元素,比如说,高度为50。有关生成唯一随机数的方法,请参见

    var valuesG = new Array(100), i;
    for ( i=0; i < valuesG.length; i++ )
    {
        valuesG[i] = Math.floor(Math.random()*101); 
        $("<div class='single'></div>")
           .css( 'height', valuesG[i] )
           .appendTo("#second");
    }
var valuesG=新数组(100),i;
对于(i=0;i
您只得到一个高度(最后一个),因为您在所有div中设置了相同的css类,并在每个循环中更新了它的高度,所以最后一个高度值将应用于所有div

作为解决方案,请尝试以下方法:

for ( i=0; i < valuesG.length; i++ )  {
   valuesG[i] = Math.floor(Math.random()*101); 
   $("<div class='single'></div>").css('height',valuesG[i]).appendTo("#second");
}
(i=0;i{ valuesG[i]=Math.floor(Math.random()*101); $(“”).css('height',valuesG[i])。附在('second'); }
当您使用无单位高度值(即随机数)时,我建议使用
.height(valuesG[i])
而不是
.css(…)
,因为css值可能要求您也提供单位值(即“px”)-它可以按原样为您工作,但我更愿意确定