JavaScript中能否从字典内部的项引用该字典本身?
图片加载完成后修改对应数组项的实现方案
核心实现逻辑是给Image实例绑定加载完成事件,利用对象引用特性直接修改对应数组项,修正后的代码及注意事项如下:
images.push({ image:new Image(), x:100, y:100, width:100, height:100, card:"2♠", visible:true }) let imageItem = images[i]; let imgElement = imageItem.image; // 先绑定加载完成事件,再赋值src避免漏触发 imgElement.onload = function() { // 此处直接修改imageItem的属性,数组对应项会同步更新 // 示例:更新为图片真实宽高 imageItem.width = this.naturalWidth; imageItem.height = this.naturalHeight; // 其他自定义修改逻辑写在这里即可 } // 可选:添加加载异常处理 imgElement.onerror = function() { imageItem.loadError = true; } // 赋值src触发图片加载 imgElement.src = "你的图片资源地址";
注意事项:
- 必须先绑定
onload/onerror事件,再给图片赋值src,否则如果图片已被浏览器缓存,会直接触发加载完成事件,导致回调未执行 - 数组中的项是引用类型,直接修改
imageItem的属性,数组内对应项的数据会同步更新,不需要额外操作数组 - 原代码存在函数名大小写不匹配的问题,调用的
myFunction和定义的myfunction大小写不一致,JavaScript区分大小写,会导致运行报错,需要统一命名
内容的提问来源于stack exchange,提问作者kroojel
相关产品推荐
相关产品推荐

