我需要基本上重复以下内容,直到a10和g10。所以我理论上可以继续如下,并最终有大量的重复,但我知道这是一个可怕的做法。简化这一点的最佳方法是什么?
function enterall() {
var a1 = localStorage.getItem('a1');
var b1 = localStorage.getItem('b1');
var c1 = localStorage.getItem('c1');
var d1 = localStorage.getItem('d1');
var e1 = localStorage.getItem('e1');
var f1 = localStorage.getItem('f1');
var g1 = localStorage.getItem('g1');
var a2 = localStorage.getItem('a2');
var b2 = localStorage.getItem('b2');
var c2 = localStorage.getItem('c2');
var d2 = localStorage.getItem('d2');
var e2 = localStorage.getItem('e2');
var f2 = localStorage.getItem('f2');
var g2 = localStorage.getItem('g2');
db.transaction(function (tx) {
tx.executeSql("INSERT INTO mytable (id, item, code, val, val2, val3, val4) VALUES (?,?,?,?,?,?,?)", [a1, b1, c1, d1, e1, f1, g1], function (tx, results){
alert('records in');
});
});
db.transaction(function (tx) {
tx.executeSql("INSERT INTO mytable (id, item, code, val, val2, val3, val4) VALUES (?,?,?,?,?,?,?)", [a2, b2, c2, d2, e2, f2, g2], function (tx, results){
alert('records in');
});
});
};
答案 0 :(得分:1)
您应该使用嵌套for循环和数组来包含您的值:
var values = new Object();
var letters = ["a", "b", "c", "d", "e", "f", "g"];
letters.forEach(function(letter) {
for (var i = 1; i <= 10; i++) {
values[letter + i] = localStorage.getItem(letter + i);
}
});
答案 1 :(得分:0)
尝试这样的事情:
var results = {'first': [], 'second': []};
var letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];
for (var i = 0; i < 7; i++) {
results['first'].push(localStorage.getItem(letters[i] + '1'));
results['second'].push(localStorage.getItem(letters[i] + '2'));
}
答案 2 :(得分:0)
除了先前的答案,我还建议为db.transaction函数使用循环。作为单独的函数,这两个函数都会更好,从enterall()函数中调用。我想要的另一个建议就是将它们变成对象,既可以添加到localStorage,也可以将它们取出来,以使代码更清晰。
答案 3 :(得分:0)
如果您不想创建阵列,也可以使用它:
for(var num=1; num <= 10; num++) {
var arr = [];
for(var letter = 'a'.charCodeAt(0); letter <= 'g'.charCodeAt(0); letter ++) {
arr.push(localStorage.getItem(String.fromCharCode(letter) + num));
}
db.transaction(function (tx) {
tx.executeSql("INSERT INTO mytable (id, item, code, val, val2, val3, val4) VALUES (?,?,?,?,?,?,?)", arr, function (tx, results){
alert('records in');
});
});
}