Javascript 将参数传递给KeyDown
如何将参数从jquery传递到keydown方法中,因为每当我使用在别处定义的变量时,它都返回undefined。我假设它是因为#target是window,因此它不在范围内,但即使这样,我也很难让它将key.which()与外部参数进行比较,然后将其分配给另一个属性 例如:Javascript 将参数传递给KeyDown,javascript,jquery,undefined,scope,keydown,Javascript,Jquery,Undefined,Scope,Keydown,如何将参数从jquery传递到keydown方法中,因为每当我使用在别处定义的变量时,它都返回undefined。我假设它是因为#target是window,因此它不在范围内,但即使这样,我也很难让它将key.which()与外部参数进行比较,然后将其分配给另一个属性 例如: var a = 38; var b = 0; $(document).keydown(function(e){ var key = e.which; if (a==key) b=key; }); conso
var a = 38;
var b = 0;
$(document).keydown(function(e){
var key = e.which;
if (a==key)
b=key;
});
console.log(a+""+b);
每当我尝试按照相同的行执行某项操作时,它返回38 0,我将其解释为不在范围内且未定义(还因为如果我记录b,它将在keydown func中打印未定义)?我如何传入?您的意思是将console.log放在
键下功能中吗
我能够让它做出这样的回应(正如我所期望的那样):
$(function() { /* on page load load */
var a = 38;
var b = 0;
$(document).bind('keydown',function(e){
var key = e.which;
if (a === key) {
b=key;
}
console.log(a, b, key);
});
});
在按键功能的范围内,如果按向上箭头,a和b将正确设置
我怀疑发生的事情是您的console.log发生在页面加载时。然后,您初始化了绑定,因此从未看到更新的结果。您的意思是将console.log放在键下功能中吗
我能够让它做出这样的回应(正如我所期望的那样):
$(function() { /* on page load load */
var a = 38;
var b = 0;
$(document).bind('keydown',function(e){
var key = e.which;
if (a === key) {
b=key;
}
console.log(a, b, key);
});
});
在按键功能的范围内,如果按向上箭头,a和b将正确设置
我怀疑发生的事情是您的console.log发生在页面加载时。然后,您初始化了绑定,因此从未看到更新的结果。试试这个
$(document).on("keydown", function(e, key){
var a = 38;
var b = 0;
if (e.which === a) {b = e.which};
var key = (key === undefined ? b : a);
return console.log(a + " " + b + " " + key)
});
function key(e, a, b, key) {
/* settings */
var a = (a === undefined ? 38 : a);
var b = (b === undefined ? 0 : b);
if (e.which === a) {b = e.which};
var key = (key === undefined ? b : a);
return console.log(a + " " + b + " " + key)
};
$(document).on("keydown", key); /* `38` `38` `38` */
/* `a`, `b` */
$(document).on("keydown", key({},undefined,undefined,undefined)); /* `38` `0` `0` */
/* a`, `b`, or `n` */
$(document).on("keydown", function(n) {
var n = 35;
key({},37,n,undefined)
}); /* `37` `35` `35`*/
/* `n` */
$(document).on("keydown", function(n) {
var n = 35;
key({},n,n,undefined)
}); /* `35` `35` `35`*/
编辑
是的,但问题是在“向下键”中,我不能使用a和b
因为它们被设置为未定义,我必须在
我程序的另一部分–user3030188
需要时调用函数
keydown事件被触发,也许您可以发送变量
而不是使其全球化L105
是的,这很有道理,但我想知道的是我是否能通过考试
a或b作为案例陈述,如果我在
程序会被覆盖吗?为什么会返回未定义的
用户3030188
试试这个
$(document).on("keydown", function(e, key){
var a = 38;
var b = 0;
if (e.which === a) {b = e.which};
var key = (key === undefined ? b : a);
return console.log(a + " " + b + " " + key)
});
function key(e, a, b, key) {
/* settings */
var a = (a === undefined ? 38 : a);
var b = (b === undefined ? 0 : b);
if (e.which === a) {b = e.which};
var key = (key === undefined ? b : a);
return console.log(a + " " + b + " " + key)
};
$(document).on("keydown", key); /* `38` `38` `38` */
/* `a`, `b` */
$(document).on("keydown", key({},undefined,undefined,undefined)); /* `38` `0` `0` */
/* a`, `b`, or `n` */
$(document).on("keydown", function(n) {
var n = 35;
key({},37,n,undefined)
}); /* `37` `35` `35`*/
/* `n` */
$(document).on("keydown", function(n) {
var n = 35;
key({},n,n,undefined)
}); /* `35` `35` `35`*/
试试这个
$(document).on("keydown", function(e, key){
var a = 38;
var b = 0;
if (e.which === a) {b = e.which};
var key = (key === undefined ? b : a);
return console.log(a + " " + b + " " + key)
});
function key(e, a, b, key) {
/* settings */
var a = (a === undefined ? 38 : a);
var b = (b === undefined ? 0 : b);
if (e.which === a) {b = e.which};
var key = (key === undefined ? b : a);
return console.log(a + " " + b + " " + key)
};
$(document).on("keydown", key); /* `38` `38` `38` */
/* `a`, `b` */
$(document).on("keydown", key({},undefined,undefined,undefined)); /* `38` `0` `0` */
/* a`, `b`, or `n` */
$(document).on("keydown", function(n) {
var n = 35;
key({},37,n,undefined)
}); /* `37` `35` `35`*/
/* `n` */
$(document).on("keydown", function(n) {
var n = 35;
key({},n,n,undefined)
}); /* `35` `35` `35`*/
编辑
是的,但问题是在“向下键”中,我不能使用a和b
因为它们被设置为未定义,我必须在
我程序的另一部分–user3030188
需要时调用函数
keydown事件被触发,也许您可以发送变量
而不是使其全球化L105
是的,这很有道理,但我想知道的是我是否能通过考试
a或b作为案例陈述,如果我在
程序会被覆盖吗?为什么会返回未定义的
用户3030188
试试这个
$(document).on("keydown", function(e, key){
var a = 38;
var b = 0;
if (e.which === a) {b = e.which};
var key = (key === undefined ? b : a);
return console.log(a + " " + b + " " + key)
});
function key(e, a, b, key) {
/* settings */
var a = (a === undefined ? 38 : a);
var b = (b === undefined ? 0 : b);
if (e.which === a) {b = e.which};
var key = (key === undefined ? b : a);
return console.log(a + " " + b + " " + key)
};
$(document).on("keydown", key); /* `38` `38` `38` */
/* `a`, `b` */
$(document).on("keydown", key({},undefined,undefined,undefined)); /* `38` `0` `0` */
/* a`, `b`, or `n` */
$(document).on("keydown", function(n) {
var n = 35;
key({},37,n,undefined)
}); /* `37` `35` `35`*/
/* `n` */
$(document).on("keydown", function(n) {
var n = 35;
key({},n,n,undefined)
}); /* `35` `35` `35`*/
您的console.log
无法工作,因为它是在加载脚本时初始化的。你需要做的是在按键时触发你的功能
// When the document is ready
$(function() {
$(document).keydown(function(e){
var key = e.which;
var a = 'a scoped variable';
switch (key) {
// Up arrow
case 38:
a = upArrowFunction(a); // Assign a to the returned value.
break;
// Down arrow
case 40:
downArrowFunction();
break;
}
});
function upArraowFunction(a) {
a = 'I change a, but a is not changed in keydown event';
return a; // But now I return the changed variable so it will change if a variable is assigned where the function is called.
}
function downArrowFunction() {
// Do something else
}
});
您的console.log
无法工作,因为它是在加载脚本时初始化的。你需要做的是在按键时触发你的功能
// When the document is ready
$(function() {
$(document).keydown(function(e){
var key = e.which;
var a = 'a scoped variable';
switch (key) {
// Up arrow
case 38:
a = upArrowFunction(a); // Assign a to the returned value.
break;
// Down arrow
case 40:
downArrowFunction();
break;
}
});
function upArraowFunction(a) {
a = 'I change a, but a is not changed in keydown event';
return a; // But now I return the changed variable so it will change if a variable is assigned where the function is called.
}
function downArrowFunction() {
// Do something else
}
});
这是正常的,因为加载脚本时会触发控制台.log
,而不是检测到keydown
事件时。是的,但问题是在keydown中,我不能使用a和b,因为它们被设置为未定义,我必须在程序的另一部分启动它们当keydown
事件被触发,可能您可以将变量发送到函数,而不是使其成为全局变量。这是正常的,因为控制台。日志是在加载脚本时触发的,而不是在检测到keydown
事件时触发的。是的,但问题是,在keydown中,我不能使用a和b,因为它们被设置为未定义,并且我没有要在我的程序的另一部分中启动它们,请在触发keydown
事件时调用您的函数,也许您可以将变量发送到函数,而不是使其全局化。是的,这是有道理的,但我想知道的是,如果我在程序的另一部分中定义它们,是否可以将a或b作为case语句传递他们被覆盖为什么它会返回未定义?我修改了我的示例来演示如何做。是的,这是有道理的,但我想知道的是,如果我在程序的另一部分中定义了它们,我是否可以将a或b作为case语句传递,他们会被覆盖为什么它会返回未定义?我修改了示例来演示如何做信息技术