Javascript 至少1000000个分区的大电网

Javascript 至少1000000个分区的大电网,javascript,php,jquery,html,performance,Javascript,Php,Jquery,Html,Performance,我的想法是使用php或js创建大量div。(我从昨天开始写js。) 因此,我自己的任务是使用php或js或两者生成一个div网格。 到目前为止,我们的想法是将一个普通div作为行,并在其中包含小单元格。首先,我使用php变量确定行的长度,然后定义行数[目前为止很简单]。我的问题出现在生成网格时。只使用php非常慢,所以我决定也使用js。我的第一次尝试将时间缩短了一半,但仍然很慢。所以我问自己,有没有办法划分js的工作?嗯,是的。。。当然要使用函数!所以我做了一个叫做扇形的函数,并试图调用它。它起

我的想法是使用php或js创建大量div。(我从昨天开始写js。)

因此,我自己的任务是使用php或js或两者生成一个div网格。 到目前为止,我们的想法是将一个普通div作为行,并在其中包含小单元格。首先,我使用php变量确定行的长度,然后定义行数[目前为止很简单]。我的问题出现在生成网格时。只使用php非常慢,所以我决定也使用js。我的第一次尝试将时间缩短了一半,但仍然很慢。所以我问自己,有没有办法划分js的工作?嗯,是的。。。当然要使用函数!所以我做了一个叫做扇形的函数,并试图调用它。它起作用了,但还是太慢了。那么,做这样一件事的最佳实践是什么呢

    <?php
$rowWidth = 200;                                  // width in pixels
$rowHeight = 100;                                 // height in pixels
$boxWidth = 1;                                  // box width in pixels
$boxHeight = 1;                                 // box height in pixels
?>
<body>
    <script>
    function sector(sector) {
        for (var i = 0*sector; i < (<?php echo $rowHeight / 100 ?> + 100*sector); i++) { // trying to manage sectors
            var div = document.createElement('div');
            // set style
            div.style.width = '<?php echo $rowWidth ?>';
            div.style.height = '<?php echo $boxHeight ?>';
            div.style.background = 'red';
            div.setAttribute('class', 'row'); // and make a class for future css (for now using inline css set by js)
            div.setAttribute('id', 'row'+i); // and make an id selector
            document.body.appendChild(div);
            for (var e = 0; e < <?php echo $rowWidth ?>; e++) {
                var box = document.createElement('div');
                // set style
                box.style.width = '<?php echo $boxWidth ?>';
                box.style.height = '<?php echo $boxHeight ?>';
                box.style.float = 'left';
                box.style.background = 'pink';
                box.setAttribute('class', 'box'); // and make a class for future css (for now using inline css set by js)
                box.setAttribute('id', 'box'+e); // and make an id selector
                document.getElementById('row'+i).appendChild(box); // joining my row
            }
        }
    }
    <?php for ($sector=0; $sector < ($rowWidth / 100) ; $sector++) { ?>
        //calling all sectors, calling all sectors... please report
        sector(<?php echo $sector+1 ?>);
    <?php } ?>
    </script>
</body>

职能部门(部门){
对于(VARI=0*扇区;i<(+100*扇区);i++){//尝试管理扇区
var div=document.createElement('div');
//设置样式
div.style.width='';
div.style.height='';
div.style.background='red';
div.setAttribute('class','row');//并为将来的css创建一个类(目前使用js设置的内联css)
div.setAttribute('id','row'+i);//并创建一个id选择器
文件.正文.附件(div);
对于(var e=0;e<;e++){
var-box=document.createElement('div');
//设置样式
box.style.width='';
box.style.height='';
box.style.float='左';
box.style.background='pink';
setAttribute('class','box');//并为将来的css创建一个类(目前使用js设置的内联css)
setAttribute('id','box'+e);//并创建一个id选择器
document.getElementById('row'+i).appendChild(box);//加入我的行
}
}
}
//呼叫所有扇区,呼叫所有扇区。。。请报告
扇区();
更新: 这看起来和我的想法很相似


它们是如何制作的?

如果您的目的是显示一个图像,在其中设置各个像素,那么使用画布元素将获得更好的结果

下面是一个小演示:

var canvas=document.getElementById(“canvas”);
var ctx=canvas.getContext('2d');
var imgData=ctx.getImageData(0,0,canvas.width,canvas.height);
函数绘图(){
ctx.putImageData(imgData,0,0);
}
功能设置像素(x、y、红色、绿色、蓝色){
变量偏移=(y*canvas.width+x)*4;
imgData.data[偏移量]=红色;
imgData.data[偏移量+1]=绿色;
imgData.data[偏移量+2]=蓝色;
imgData.data[offset+3]=255;//不透明度
}
//示例:沿直线设置一些绿色像素
对于(变量i=0;i<200;i++){
设置像素(i,i>>2,0,128,0);
}
draw();//显示结果。

如果您的目的是显示一个图像,在其中设置各个像素,那么使用画布元素将获得更好的结果

下面是一个小演示:

var canvas=document.getElementById(“canvas”);
var ctx=canvas.getContext('2d');
var imgData=ctx.getImageData(0,0,canvas.width,canvas.height);
函数绘图(){
ctx.putImageData(imgData,0,0);
}
功能设置像素(x、y、红色、绿色、蓝色){
变量偏移=(y*canvas.width+x)*4;
imgData.data[偏移量]=红色;
imgData.data[偏移量+1]=绿色;
imgData.data[偏移量+2]=蓝色;
imgData.data[offset+3]=255;//不透明度
}
//示例:沿直线设置一些绿色像素
对于(变量i=0;i<200;i++){
设置像素(i,i>>2,0,128,0);
}
draw();//显示结果。

你有没有试着在它上面放一个计时器,看看它在哪里减速?就我而言,这是整个该死的东西的展示。所以我把它放进一个bootgrid中,让它快速运行a)你为什么要显示一百万div b)PHP与此有什么关系,c)是什么让你认为有一种方法可以显示一百万div而不影响性能?你不能简单地将一百万div输出到用户的浏览器中,这会很慢。。。如果可能的话,可以把它们分成几页,否则我认为这是不可能的。最好的做法是不这样做。第1步不是使用一百万个div,因为这会杀死浏览器。研究如何使用HTML5画布元素。第2步不是在数据库中存储单个像素,因为这样会破坏数据库。查看实际的图像格式。第三步是使用PNG或JPG或GIF…正如其他人所说,没有办法优化显示100万div,因为浏览器的设计不是为了呈现100万div。除非您专门为此目的创建自己的browser+渲染引擎,否则无论发生什么情况,这都会很慢。单是网页的大小就足以让人惊叹,>10mb仅仅是用于页面DOM。在您发布的示例中,他们使用了一个canvas元素,并将其绘制到画布上。您是否尝试在画布上放置计时器以查看其速度在哪里减慢?就我而言,这是整个该死的东西的展示。所以我把它放进一个bootgrid中,让它快速运行a)你为什么要显示一百万div b)PHP与此有什么关系,c)是什么让你认为有一种方法可以显示一百万div而不影响性能?你不能简单地将一百万div输出到用户的浏览器中,这会很慢。。。如果可能的话,可以把它们分成几页,否则我认为这是不可能的。最好的做法是不这样做。第1步不是使用一百万个div,因为这会杀死浏览器。研究如何使用HTML5画布元素。第2步不是在数据库中存储单个像素,因为这样会破坏数据库。查看实际的图像格式。第三步是使用PNG或JPG或GIF…正如其他人所说,没有办法优化显示100万个div,因为浏览器的设计不是为了渲染100万个div