开发者社区> 问答> 正文

有什么办法能用自执行里的变量

我想获取base64 = ss.toDataURL('image/jpeg')输出的值
不过下面自执行的时候变量base64是无法存储到他的值的,
有什么办法解决?

<!DOCTYPE html>
<html>
<head>
</head>
<style type="text/css">
body{text-align:center;}
.showimg{width:200px;height:200px;overflow:hidden;position:relative;margin:100px auto;}
.showimg .imgtest{position:absolute;}
.showimg .a1{top:30px;left:30px;}
.showimg .a2{top:90px;left:120px;}
</style>
<script type="text/javascript" src="jquery.1.9.1.min.js"></script>
<body>
 <canvas id="ss" width="200" height='200'></canvas>
 <div class="showimg">
     <img src='service.jpg' width="200" height="200" />
     <img class="imgtest a1" src='service.jpg' width="20" height="20" />
     <img class="imgtest a2" src='service.jpg' width="20" height="20" />
 </div>

<script type="text/javascript">
    $(function(){
        var showimg = $('.showimg').find('img');
        var ss = document.getElementById('ss');
        var ctx = ss.getContext('2d');
        var base64;
        for(var i = 0; i < showimg.length; i++){

            var offleft = $(showimg[i]).offset().left - showimg.offset().left;
            var offtop  = $(showimg[i]).offset().top  - showimg.offset().top;
            var owidth  = $(showimg[i]).width();
            var oheight = $(showimg[i]).height();

            var images  = new Image();
            images.src  = showimg[i].src;

            (function(a,l,t,w,h){
                images.onload = function(){
                    ctx.drawImage(images,l,t,w,h)
                    base64 = ss.toDataURL('image/jpeg')
                }
            })(i,offleft,offtop,owidth,oheight)
        }
        console.log(base64)//undefined;

    })
</script>
</body>
</html>

展开
收起
a123456678 2016-03-11 18:36:25 1875 0
1 条回答
写回答
取消 提交回答
  • 这和js代码执行顺序有关,执行console.log(base64)的时候,images.onload的事件还没触发,在onload里面传入一个callback。

    2019-07-17 18:59:51
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
15分钟打造你自己的小程序 立即下载
小程序 大世界 立即下载
《15分钟打造你自己的小程序》 立即下载