- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有这个功能,可以根据放置的数组将我的对象放在我想要的位置。
如果他们在 players[0] 中,他们会去某个地方,如果他们在 players[1] 中,他们会去别处。 X 和 Y 只是为了说明目的,它们实际上是 600px 之类的东西,而且都是不同的。
这个函数还通过参数接收一个标志,它告诉函数该 src 是否继续相同或者是否设置为另一个 src。一切正常。
function putHands(flag){
if(flag == true) show= true;
else show = false;
for(var i = 0; i < 4; i++){
for(var j = 0; j < 13; j++){
if(i == 0){players[i][j].style.left = X; players[i][j].style.top = Y;}
if(i == 1){players[i][j].style.left = X; players[i][j].style.top = Y;}
if(i == 2){players[i][j].style.left = X; players[i][j].style.top = Y;}
if(i == 3){players[i][j].style.left = X; players[i][j].style.top = Y;}
if(show == true)
players[i][j].src = '../images/c'+players[i][j].id+'.gif';
}
}
}
现在我想补充一下我在标题中所说的,我尝试这样做:
players[i][j].addEventListener('mouseover', function() {players[i][j].src = '../images/c'+players[i][j].id+'.gif';});
我想给每个对象添加一个 onmouseover 事件,它会改变自身 src。
我怎样才能仅使用简单的 JavaScript 来实现这一点?每次将鼠标移到对象上时,我尝试的操作都会返回以下错误:
Uncaught TypeError: Cannot read property '13' of undefined
最佳答案
只需使用this
来引用绑定(bind)元素。
players[i][j].addEventListener('mouseover', function() {
this.src = '../images/c'+this.id+'.gif';
});
否则,您将使用在循环中不断被覆盖的 i
和 j
变量,以便当处理程序最终触发时,它会获得它们最后的值已分配。
换句话说,在分配的处理程序中,它本来是......
players[4][13]
...这超出了范围,显然不是您想要的数字。
如果您确实需要 i
和 j
用于任何其他目的,您可以将它们直接添加到元素本身 (如果这不打扰您),或者您可以通过在循环的每次迭代中调用另一个函数来创建一个新的变量范围,将 i
和 j
传递给它,并创建处理程序在那个范围内。
此外,因为现在您的函数确实不会针对每个元素而改变,您可以使用单个函数而不是在循环中创建多个函数。
function handler() {
this.src = '../images/c'+this.id+'.gif';
}
function putHands(flag){
if(flag == true) show= true;
else show = false;
for(var i = 0; i < 4; i++){
for(var j = 0; j < 13; j++){
// ...your code...
players[i][j].addEventListener('mouseover', handler);
}
}
}
现在,所有元素都可以高效地重用一个函数。
另外,有点跑题了,不过这...
if(flag == true) show= true;
else show = false;
可以缩短为:
show = !!flag;
从技术上讲,它有点不同,因为 ==
的语义不是简单的 truthy/falsey 评估。如果你真的需要 ==
的行为,那么你可以这样做:
show = flag == true;
关于javascript - onmouseover 改变 html img 对象的 src 的 addEventListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31170250/
我正在尝试使用 jquery 获取图像 src,如下所示: HTML Javascript var imageSrc = $('.post_container img').attr('s
我遇到错误,无法完成构建。我搜索了 Stackoverflow 和 Github。我已经尝试了很多方法,但我无法修复。请帮忙。 (1) 在 [src/nullnull/debug, src/debug
我正在尝试使用图像制作一款类似 Match3 的游戏,但我无法进行比较。我正在为固定数量的 atm 执行此操作,只是为了让它正常工作,稍后应该在 foreach 循环中。如果有什么区别的话,该函数位于
我正在使用 jquery 插件 OwlCarousel,在我的一个 View 中使用 ng-repeat 场景,如下所示: 它运行良好,并为轮播中的每个项目输出以下标记: 有没
我的代码如下所示: Bitmap b = BitmapFactory.decodeResource(getResources(), R.drawable.image1); int wi
如果未找到 src,我将使用 Angular 指令作为后备 url 作为名称首字母 指令 (function () { 'use strict'; angular .m
我是构建 chrome 扩展的新手,从一个小项目开始,我需要在弹出窗口中打印“构建版本”。构建版本被附加到 JS/CSS 资源中,如下所示: 需要从脚本 src 值中提取“6.0”。你能帮我看看如何
类型‘AbstractControl’上不存在属性‘Controls’。
这个tutorial演示如何使用指令 ngSrc 而不是 src : 他们要求: Replace the ng-src directive with a pl
我正在创建一个包含多个图像的图库,您可以在其中单击一个小缩略图,然后将打开该图像的更大版本。 打开后,如果您移动光标,图像将在 y 轴上跟随您。类似于 https://www.zara.com/es/
文档[] src.charAt src.length 这三样东西是什么? 我确定 pixState 会给我 1 或 0; var pixState = document[imgName].src.ch
问题背景: 我正在使用这个问题的解决方案:How to update AngularJS view when the value has not changed?所以在我看来我有: 当我更改照片时
我在 html 中有整个页面,在输出之前我想将所有 img src 替换为 data-src我正在使用 return (preg_replace('~]*\K(?=src)~i','data-',
Difference(s): android:src and tools:src? 如果有的话,什么时候使用 tools:src 而不是 android:src 是合适的? 最佳答案 如果您在运行时在
我需要检查每个 script 标签的 src 值,如果匹配,我想更改该脚本标签的 src 属性...像这样: var scripts = document.getElementsByTagName("
使用 img 标签的 data-src 或 src 属性有什么区别和后果(好的和坏的)?我可以使用两者获得相同的结果吗?如果是这样,应该什么时候使用它们? 最佳答案 属性 src 和 data-src
我使用 Vue。我尝试输出图像,当我使用 src 时效果很好,但当我使用 :src 时效果不佳。 作品 不起作用 我试过但没有用 @ 在路径的第一个。 ~ 路径中的第一个。 ./ 在路径的第一个。
在当前项目中我正在使用 jQuery。我只是想知道为什么会这样, $('#homeIcon').hover(function(){ document.getElementById('homeI
我在严格的 Java 环境中。 所以这个问题并不像标题中那么简单,我不是要解决我遇到的问题,它更理论化,以获得更好的知识。 我感兴趣的是用双引号或单引号匹配 src,但如果是双引号,它也必须用双引号结
我有一个 Joomla 2.5.28,现在使用 https 而不是 http。 一些文章(很多)包含来自 Vimeo 的嵌入视频。 最初,这些视频是使用http嵌入的,所以现在我的数据库中有字段int
我是一名优秀的程序员,十分优秀!