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