为了账号安全,请及时绑定邮箱和手机立即绑定

获取canvas节点在渲染dom之前,为什么可以获取到?

var render = function(){
            var html='';
            var padding=2;
            
            var winWidth=zWin.width();
            var picWidth=(winWidth-padding*3)/4;
            for(var i = 1;i<=total;i++){
                var imgSrc='img/'+i+'.jpg';
                var p= i%4 == 1? 0:padding;
                html+='<li style="width:'+picWidth+'px;height:'+picWidth+'px;padding-top:2px;padding-left:'+p+'px"><canvas         id="cvs_'+i+'"></canvas></li>'

                var imageObj = new Image();
                imageObj.index=i;
                imageObj.onload = function(){
                    var cvs = $('#cvs_'+this.index)[0].getContext('2d');
                    //经过$包装后成为一个zepto对象,后面加【0】转换dom对象
                    //getContext('2d')绘图环境
                    cvs.width=this.width;
                    cvs.height = this.height;
                    cvs.drawImage(this,0,0);
                }
                imageObj.src = imgSrc;
            }

            $('#container').html(html);
        }
        render();

代码中突出的部分可以看出,在 for 循环中 canvas作为html变量中的字符串存在 ,并未渲染成DOM(循环结束后才通过$('#container').html(html);写入dom),此时为什么可以通过 var cvs = $('#cvs_'+this.index)[0].getContext('2d');获取到该节点?


正在回答

1 回答

图片加载需要时间,加载完毕后 ,for循环也结束了

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
移动端的WEB相册
  • 参与学习       47967    人
  • 解答问题       217    个

本课程通过一个移动端相册案例,带您一步步了解移动端框架

进入课程

获取canvas节点在渲染dom之前,为什么可以获取到?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信