单击的元素函数参数的值错误
Value of clicked element function argument is wrong
我有一个循环(从0到5),它为<nav>
中的每个元素添加onclick
事件。
<nav class="mq-ui-bg tools-bar" style="top:70px;left:20px;width:65px;height:385px;">
<div class="container">
<div class="tool selected"><div class="pa" style="background-image:url('Images/Icon/Cursor.png');"></div></div>
<div class="tool"><div class="pa" style="background-image:url('Images/Icon/Select1.png');"></div></div>
<div class="tool"><div class="pa" style="background-image:url('Images/Icon/Bucket.png');"></div></div>
<div class="tool"><div class="pa" style="background-image:url('Images/Icon/Rect1.png');"></div></div>
<div class="tool"><div class="pa" style="background-image:url('Images/Icon/Circle1.png');"></div></div>
<div class="tool"><div class="pa" style="background-image:url('Images/Icon/Erase.png');"></div></div>
</div>
</nav>
在它的onclick
事件中,调用了一个带有参数的函数,该函数包含元素在我上面添加的导航中的位置编号。
他们的代码很短:
function FixTools(){
var elqry=ElementClass('tools-bar').getElementsByClassName('tool');
for(var i=0;i<elqry.length;i++){
elqry[i].children[0].onclick=
function(){
SelectTool(i)
};
}
function SelectTool(n){
er=ElementClass('tools-bar').getElementsByClassName('tool');
function fu1(i){
Attribute( /* This changes the class attribute */
er[i],
'class',
'tool '+
((i==n)?'selected':'un')
/* If i value is equal to clicked element position number
in my nav, then it will be selected */
);
}
for(var i=0;i<er.length;i++){
fu1(i);
/* This loop should unselect all elements
that are not from n position number in my nav*/
}
delete er;
}
}
FixTools();
所以我的问题是,在我的FixTools()
函数中,进入第一个循环,进入onclick
事件和进入SelectTool(i)
函数的第一个参数,我只收到一个整数,这个:6
,数字6。
我做错了什么?
由于误点击,我无法以重复方式关闭,因此这里有一个修复
这是一个经典问题:当调用回调时,i
的值为循环结束。
for(var i=0;i<elqry.length;i++){
(function(i){
elqry[i].children[0].onclick=
function(){
SelectTool(i)
};
})(i);
}
这里的想法是将循环体封装在一个函数中,创建一个保存函数调用时i
值的范围。
相关文章:
- 模版启动错误-类型错误(“参数”url'必须是字符串,而不是“+类型的url”)
- Node.js错误:参数太多上传批量数据时出错
- 为什么我会得到这个错误:ng:areq错误参数
- AngularJS'ng:areq错误参数"{controller}不是函数“;,CodeIgnite
- 控制器错误:参数不是函数,未定义
- 错误:参数'ContactController'不是函数,未定义
- “类型错误:参数 1 的 ..不是 Firefox 中的有限浮点值”
- AngularJS错误:“参数'FirstCtrl'不是一个函数,未定义”
- “未捕获的语法错误:参数列表后缺少 )”
- Javascript 未捕获的语法错误:参数列表后缺少 )
- 错误:参数 4 的值无效.属性“方法”:意外属性
- 语法错误:参数列表后缺少 )
- 我一直收到这个角度js错误:参数“示例控制器”不是一个函数,未定义
- 角度:'错误:areq错误参数'由于缩小
- 错误:ng:areq错误参数:参数'registerController'不是函数,未定义
- 引用错误:参数未在 Ember.js 中定义
- Angular js-错误:ng:areq错误参数-
- 为什么我得到错误参数是未定义的
- WebGL Fragment Shader构造函数错误-参数太多
- 错误:ng:areq错误参数和参数没有在ANGULARJS中定义