1

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

4

2 回答 2

9

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

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

if(a < 58 && a > 48 && b) {
  alert(document.getElementById('alert'+(a-48)).length)
}
于 2012-12-30T17:56:07.020 回答
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);
}
于 2012-12-30T17:58:40.770 回答