我'我试图使用onclick事件在循环中定义一个函数,但它不'不像我期望的那样工作.我该怎么做呢?
I'm trying to define a function inside of a loop using onclick event, but it doesn't work like I expect. What should I do differently?
我正在尝试使用javascript在html页面中添加div的边界。我似乎不能使用onclick事件。这是我的javascript:
var attacker = document.getElementsByClassName('attacker');
for (var i = 0; i < attacker.length; i++) {
attacker[i].onclick = function() {
attacker[i].style.border = "3px solid blue";
}};
这是我的html:
<div class="attacker">
<img src="img/'.$race2.'/'.$units2[$i].'.jpg" />
<div class="hp"></div>
</div>
当我通过输入attack [0].style改变add border时。Border = "3px纯蓝色";直接进入javascript它正在工作,但当我使用onclick事件它说,我不能设置未定义的属性。知道我哪里做错了吗?
这是因为i
没有被关闭,所以.onclick
函数将始终使用i
作为.attacker
列表的长度+ 1。有几种解决方案,但我最喜欢的是使用.forEach
遍历节点列表,以便闭包是自动的:
Array.prototype.forEach.call(document.getElementsByClassName('attacker'),
function (elem) {
elem.addEventListener('click', function () {
this.style.border = "3px solid blue";
});
});
这里有一个解决方案:
- http://jsfiddle.net/XjKEj/
在匿名函数中使用this
,而不是attacker[i]
,因为它在该函数作用域中不可用。
相关文章:
- 我想重定向点击,然后更改按钮文本,我该怎么做
- I'我试图在我的网页上动态地上下移动元素.我该怎么做
- 我尝试将引导下拉按钮添加到 但下拉菜单不起作用.我该怎么做
- 我该怎么做才能防止在用户单击后退按钮时出现咆哮消息
- 我该怎么做;仅百分比”;Regex工作
- 我该怎么做[硬编码号码].[函数调用]在Javascript中工作
- 我正在尝试一个接一个地播放一个 mp3 文件(一个作为介绍),但它不起作用.我该怎么做
- 我该怎么做:“按下录制按钮时,按钮将闪烁”
- 我该怎么做才能创建一个永远有效的 HTML 页面
- 我希望我的视频在点击时更改为另一个视频,我该怎么做
- (飞镖)我希望触发两个不同的onclick功能,具体取决于单击时是否选中了单选按钮.我该怎么做
- ReactJS:我该怎么做,我正确地使用这个文本输入组件
- 想将 IMG 更改为链接,我该怎么做
- Facebook:对话框窗口弹出 - 导航离开时,我该怎么做
- jquery/js - 我有一堆值(字符串).我想通过 POST 将其发送到另一个 URL,我该怎么做
- 手风琴我想更改第一个 li 边框半径和最后一个 li 边框半径,我该怎么做请帮助我.
- list.setGrouped(true)DOESN'T工作??我该怎么做
- 我该怎么做?(Chrome扩展)
- 此代码有效,但应该是一个循环.我该怎么做
- 我'我试图使用onclick事件在循环中定义一个函数,但它不'不像我期望的那样工作.我该怎么做呢?