Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript能生成可执行的javascript代码吗?_Javascript_Jquery_Html_Keycode - Fatal编程技术网

javascript能生成可执行的javascript代码吗?

javascript能生成可执行的javascript代码吗?,javascript,jquery,html,keycode,Javascript,Jquery,Html,Keycode,这是一个示例javascript代码,用于在用户单击shift+1(或2,3…9)时提醒用户 但正如你所看到的,这段代码几乎是一样的 a = window.event.keyCode; var b = window.event.shiftKey if (a == 49 && b) {     alert(document.getElementById('alert1').length) } if (a == 50 && b) {     alert(docum

这是一个示例javascript代码,用于在用户单击shift+1(或2,3…9)时提醒用户

但正如你所看到的,这段代码几乎是一样的

a = window.event.keyCode;

var b = window.event.shiftKey

if (a == 49 && b) {
    alert(document.getElementById('alert1').length)
}
if (a == 50 && b) {
    alert(document.getElementById('alert2').length)
}
if (a == 51 && b) {
    alert(document.getElementById('alert3').length)
}
if (a == 52 && b) {
    alert(document.getElementById('alert4').length)
}
if (a == 53 && b) {
    alert(document.getElementById('alert5').length)
}
if (a == 54 && b) {
    alert(document.getElementById('alert6').length)
}
if (a == 55 && b) {
    alert(document.getElementById('alert7').length)
}
if (a == 56 && b) {
    alert(document.getElementById('alert8').length)
}
if (a == 57 && b) {
    alert(document.getElementById('alert9').length)
}

是否有任何javascript(可以是jQuery)代码(使用
for(){}
方法或其他方法)可以通过编写更少的代码和浏览器生成并在需要时执行的其他代码来完成相同的工作?

您不应该创建可执行的javascript,而应该检查代码

重复的代码多数情况下可以作为循环编写,或者在您的情况下可以通过数学编写

if(a < 58 && a > 48 && b) {
  alert(document.getElementById('alert'+(a-48)).length)
}
if(a<58&&a>48&&b){
警报(document.getElementById('alert'+(a-48)).length)
}

您不应该创建可执行的Javascript,而应该检查代码

重复的代码多数情况下可以作为循环编写,或者在您的情况下可以通过数学编写

if(a < 58 && a > 48 && b) {
  alert(document.getElementById('alert'+(a-48)).length)
}
if(a<58&&a>48&&b){
警报(document.getElementById('alert'+(a-48)).length)
}

您可能并不真正想要代码生成+执行,这可能会变得非常危险

您只需要对代码进行一点修改:

var ALERT_KEYCODE_OFFSET = 48;
var alertIndex, alertId;
if (a >= 49 && a <= 57 && b)
{
    alertIndex = a - ALERT_KEYCODE_OFFSET;
    alertId = 'alert' + alertIndex;
    alert(document.getElementById(alertId).length);
}
var-ALERT\u-KEYCODE\u-OFFSET=48;
var-alertIndex,alertId;

如果(a>=49&&a您可能并不真正想要代码生成+执行,那么这可能会非常危险

您只需要对代码进行一点修改:

var ALERT_KEYCODE_OFFSET = 48;
var alertIndex, alertId;
if (a >= 49 && a <= 57 && b)
{
    alertIndex = a - ALERT_KEYCODE_OFFSET;
    alertId = 'alert' + alertIndex;
    alert(document.getElementById(alertId).length);
}
var-ALERT\u-KEYCODE\u-OFFSET=48;
var-alertIndex,alertId;

如果(a>=49&&a
'alertX'
都是字符串。你可以从
a
的值动态创建。试一试。那么?它仍然是一个变量。你想用它做什么都行。
'alertX'
的可能副本都是字符串。你可以从
a
的值动态创建。试一试。那么?它仍然是一个变量。做你想做的。在
if
中使用
var
的可能重复让我哭泣。这让遵循变量的范围变得更加乏味。因此,如果一切都是全局的,那么就不那么乏味了?好的。“if”有特殊的范围规则吗我不知道?呃@PaulS.,我的错。现在我知道了。我恨你JavaScript。对于那些不知道的人,我的意思是,如果你在
if
之前设置
var
,而不是在它里面,那就没那么麻烦了。
如果
块没有自己的作用域,除非你能使用JavaScript 1.7的
let
,任何
var
都会得到h从上到作用域的开头。这意味着,如果你试图找到是否/哪个作用域声明了
var
,如果这样写的话,可能会让人困惑。编辑是的,非块作用域是JavaScript的众多怪癖之一。是的,我有一个愚蠢的想法,那就是
var
(不使用
let
)。我的意思是,它看起来应该如此。谢谢你给我展示了其他方法!在
if
中使用
var
会让我哭泣。这会让跟踪变量的范围变得更加乏味。因此,如果一切都是全局的,那么它就不那么乏味了?好的。对“if”有特殊的作用域规则吗我不知道?呃@PaulS.,我的错。现在我知道了。我恨你JavaScript。对于那些不知道的人,我的意思是,如果你在
if
之前设置
var
,而不是在它里面,那就没那么麻烦了。
如果
块没有自己的作用域,除非你能使用JavaScript 1.7的
let
,任何
var
都会得到h从上到作用域的开头。这意味着,如果你试图找到是否/哪个作用域声明了
var
,如果这样写的话,可能会让人困惑。编辑是的,非块作用域是JavaScript的众多怪癖之一。是的,我有一个愚蠢的想法,那就是
var
(不使用
let
)。我的意思是,它看起来应该是这样的。谢谢你给我看其他的!