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

时间:2012-12-30 17:51:10

标签: 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(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(){}方法或其他东西)通过编写更少的代码和其他代码来执行相同的工作,这些代码由浏览器生成并在执行时执行需要?

2 个答案:

答案 0 :(得分:9)

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

重复代码大部分时间都可以写成循环,或者通过数学编写。

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

答案 1 :(得分:2)

你可能真的不想要代码生成+执行,这可能会非常危险。

您只需要DRY代码:

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);
}