Javascript将变量传递给事件函数
我无法将I的值传递给scMotion函数Javascript将变量传递给事件函数,javascript,Javascript,我无法将I的值传递给scMotion函数 for ( i = 0; i < tmp.length; i++ ) { document.getElementById("sc"+i).onmousedown=function() { return scMotion(i,'up') }; } for(i=0;i
for ( i = 0; i < tmp.length; i++ ) {
document.getElementById("sc"+i).onmousedown=function() { return scMotion(i,'up') };
}
for(i=0;i
为了澄清这个问题,这个for循环正在做其他事情,向dom添加元素
出于某种原因,即使i位于数字39,在函数i中传递的i的值也是i.e.80的最终值。在键入它时起作用,因为在
i
和函数之间应该有一个闭包:
var i="4";
document.getElementById("sc"+i).onmousedown=function() {
return scMotion(i,'up'); // <-- due to the created closure, the i here
// refers to the i above.
};
var i=“4”;
document.getElementById(“sc”+i).onmousedown=function(){
返回scMotion(i,'up');//,它在键入时起作用,因为在i
和函数之间应该有一个闭包:
var i="4";
document.getElementById("sc"+i).onmousedown=function() {
return scMotion(i,'up'); // <-- due to the created closure, the i here
// refers to the i above.
};
var i=“4”;
document.getElementById(“sc”+i).onmousedown=function(){
返回scMotion(i,'up');//尝试使用addEventListener。您可以使用id将数字传递给函数
for ( i = 0; i < tmp.length; i++ ) {
var el = document.getElementById( "sc" + i );
if ( el.addEventListener ) {
el.addEventListener( 'mousedown', handleMouseDown );
} else if ( el.attachEvent ) { // for IE8 and previous versions
el.attachEvent( 'mousedown', handleMouseDown );
}
}
function handleMouseDown( event ) {
var num = event.target.id.replace( "sc", "" );
scMotion( num, 'up' );
}
for(i=0;i
尝试使用addEventListener。您可以使用id将数字传递给函数
for ( i = 0; i < tmp.length; i++ ) {
var el = document.getElementById( "sc" + i );
if ( el.addEventListener ) {
el.addEventListener( 'mousedown', handleMouseDown );
} else if ( el.attachEvent ) { // for IE8 and previous versions
el.attachEvent( 'mousedown', handleMouseDown );
}
}
function handleMouseDown( event ) {
var num = event.target.id.replace( "sc", "" );
scMotion( num, 'up' );
}
for(i=0;i
i
在不同的范围内。这就是问题所在。@xyu:也许你需要更新你关于JS中变量范围的知识,特别是关于闭包的知识。我知道它在不同的范围内,所以问题是如何让它在正确的范围内。@user1209203:范围没有问题。你能解释一下“问题”吗在声明变量开始时,var
使其可访问。不同的作用域应该无关紧要。i
在不同的作用域中。这就是问题所在。@xyu:也许你需要更新关于JS中变量作用域的知识,特别是关于闭包的知识。我知道它在不同的作用域中,所以如何将它放在正确的作用域中,这就是问题所在。@user1209203:范围没有问题。你能解释一下“问题”吗在声明变量的开始处,var
使其可访问。不同的范围应该无关紧要。这是我以前遇到的问题,但记不清具体的解决方案。这是我以前遇到的问题,但记不清具体的解决方案。