我正试图在棋盘上展示棋子.问题是:如果我让“警报(img.src)”(从而创建了很多警报框……),件会在正确的位置显示,但如果我删除警报,它只显示一件在我画布的右上角.

你觉得怎么样?谢谢!

for (var i=1;i<9;i++){

for (var j=1;j<9;j++){

var img=new Image();

img.οnlοad=function(){

ctx.drawImage(img,p+sqs*(i-1)+(sqs-32)/2,p+bds-sqs*j+(sqs-32)/2,32,32);

};

img.src="img/"+squares[i][j]+".png";

//alert(img.src);

}

}

解决方法:

你的问题是Javascript关闭.如果您不知道这一点,look it up.如果您向onload函数添加警报(i’,’j’,’img.src)并运行程序,您将看到onload函数正在使用最终值循环变量 – 即9,9.

要传递实际想要传递的值,需要使用自调用匿名函数创建新范围.所以你的代码应该是这样的:

for (var i=1;i<9;i++){

for (var j=1;j<9;j++){

var img=new Image();

(function(i,j,img){

img.οnlοad=function(){

ctx.drawImage(img,sqs*(i-1),sqs*(j-1),32,32);

};

img.src="http://placekitten.com/"+(30+i)+"/"+(30+j);

})(i,j,img) ;

}

}

顺便说一下,当你有警报(img.src)语句时你的代码工作的原因是你在每次迭代时都停止循环,这会导致你的onload函数(在图像加载之前不会执行) )正在使用正确的i和j.如果没有alert语句,则在任何图像加载时循环设置(i,j)到(9,9).

标签:javascript,closures,html5,canvas

来源: https://codeday.me/bug/20190621/1252720.html

html画布有的电脑显示不出来桌面,不在html5画布中显示图像(javascript)相关推荐

  1. html画布有的电脑显示不出来桌面,运行后html5画布没出来

    不知道什么原因, 运行后html5画布没出来,跪求解答,谢谢 FLASK_APP = main.py FLASK_ENV = development FLASK_DEBUG = 0 In folder ...

  2. 电脑PHP动画制作画板,三分钟HTML5画布(Canvas)动画教程

    此文下面的教程中将使用的是另外一个叫做kinetic的Web动画工具包. 它们都是开源的. 把鼠标放到上面的小丑脸上,然后移开,就会有如下效果. 第一步,画五官 这个小丑没有耳朵和眉毛,所以只剩下三官 ...

  3. html5画布作品,10个会让你惊叹不已的HTML5画布(CANVAS)技术应用演

    下面的这是10个HTML5画布(canvas)技术效果演示一定会让你惊叹不已.当然,也许你也会认为,过去在老式浏览器中用flash技术也能实现这样的效果.但是,下面的这些演示只使用了现代浏览器里自带技 ...

  4. html画布设计,10个会让你惊叹不已的HTML5画布(canvas)技术应用

    随着老式浏览器(IE6)的逐渐淘汰,现代浏览器(火狐浏览器,谷歌浏览器,Opera,Safari)走向主流,越来越多的HTML5和CSS3技术开始出现在各种网站上.这些最新的网页技术究竟能给我们今后的 ...

  5. html5画布显示不出来,运行后html5画布没出来

    源自:3-9 使用前端界面调用flask发布的ckpt模型(2) 运行后html5画布没出来 不知道什么原因, 运行后html5画布没出来,跪求解答,谢谢 FLASK_APP = main.py FL ...

  6. html页面矩形,HTML5画布(矩形)

    canvas元素用于绘制图形. canvas元素是HTML5中新增的一个重要元素,元素本身是没有绘图能力,所有的绘制工作必须在javascript内部完成. 案例1: function draw(){ ...

  7. Windows 11系统如何将“此电脑”显示在桌面?

    更新了Windows11官方版本后,很多用户发现"此电脑"图标不在桌面显示,我最近也出现了这个问题,下面就是解决方法 1.在桌面空白处,右键,打开菜单中的选择显示设置-个性化(或者 ...

  8. surface怎么将计算机放到桌面,笔者帮您win10系统把此电脑和控制面板在桌面上显示的妙计...

    大家在使用电脑工作的时候会遇到win10系统把此电脑和控制面板在桌面上显示的问题,想必很多朋友都遇到过win10系统把此电脑和控制面板在桌面上显示的问题吧.解决win10系统把此电脑和控制面板在桌面上 ...

  9. 计算机怎么强制显示桌面,电脑显示桌面太大怎么办

    1.电脑屏幕显示变大了怎么办 电脑屏幕显示变大重新设置分辨率即可,方法如下: 1.电脑桌面空白地方,点击鼠标反键,可以出现"分辨率": 2.选择可以看到显示器设备的型号,还有就是分 ...

最新文章

  1. 用 go 实现跨平台 Autoit/AutoHotkey 和按键精灵功能示例代码
  2. fanuc机器人试题_黄冈职业技术学院工业机器人技术专业简介
  3. html(3)标签(2)
  4. [js] 对`a == (‘1‘||‘2‘||‘3‘) ? false : true`写法进行改进,写出你优化后的方法
  5. android otg读取索尼相机usb_OTG是何物,手机的OTG功能还有存在的必要么?
  6. OAuth2.0认证服务器之客户端相关配置
  7. php 获取硬盘所有分区,硬盘怎么分为整数分区|电脑硬盘分区整数对照表
  8. html网页打不开二级网页,二级网页打不开,小编教你浏览器二级页面打不开怎么解决...
  9. mac 安装ps2017和破解教程
  10. AI车牌识别涉及哪些技术?它是如何改变行业的?
  11. 用计算机绘制函数图像ppt,ppt怎么制作函数图
  12. TJA1403状态模式
  13. LVGL 8.2图片缩放及旋转
  14. 2021 年 Kubernetes 的开发者工具:Helm、Kustomize 和 Skaffold
  15. 计算机常用英语词汇及读音,100个最常用英文单词的完美发音,so easy!
  16. linux清理命令及常用命令
  17. 关于探讨对AI人工智能的看法和认知
  18. 电子计算机工程专业学什么,电子与计算机工程专业主要学什么 未来从事什么工作...
  19. OPENMV结合PIX飞控实现四轴定点 循迹 2017电赛
  20. 缓冲(Buffer)

热门文章

  1. java jframe_java中的JFrame | 学步园
  2. html加密文档如何打开,如何打开docx文件 在弹出窗口中选择加密的文件
  3. java中过滤器的接口_java中的过滤器
  4. 拜占庭杯 | 区块链数字经济商业分析大赛
  5. 挑战40万年薪,Cocos人才你在哪里
  6. Java程序员不得不看的38本书
  7. 海思3716C平台添加m88dc2800+高斯贝尔(EN4020)tuner驱动总结
  8. 数控等离子排版软件_数控等离子切割工艺优化创新
  9. 苏宁亮剑拼购、二手房,就问拼多多和房产中介怕不怕
  10. 原位标注挑筋包括集中标注的通长筋吗?