在javascript中存储for循环的索引

时间:2012-09-19 16:24:17

标签: javascript android for-loop indexing

我正在开发一个带有phonegap的Android应用程序。我正在制作一个HTML表格,其中包含一些来自localStorage的for循环。我需要为每一行存储for的索引i,以便从localStorage中检索一个名称类似于索引的项目。我有一些代码,但我为该效果定义的变量被循环覆盖(当然)。这是代码:

<script language="javascript">
if(len != 0) {
var table = document.getElementById('hor-minimalist-b'); // get the table element
var tableBody = table.childNodes[1]; // get the table body
var tableHead = table.childNodes[0]; // get the table head
var thead = document.createElement('th');
var row2 = document.createElement('tr'); // create a new row
var headText = document.createTextNode('Dados');
  thead.scope = "col";
    thead.appendChild(headText);
    row2.appendChild(thead);
    tableHead.appendChild(row2);

for (var i=0; i<len; i++) {

    var row = document.createElement('tr'); // create a new row

    var cell = document.createElement('td'); // create a new cell
    var a = document.createElement('a');
    var cellText = document.createTextNode(localStorage.getItem('key' + i));
    var xyz = "key" + i;    
    a.href = "alterar.html";
    a.onclick = function() { doLocalStorage(xyz) };
    a.appendChild(cellText);
    cell.appendChild(a); // append input to the new cell
    row.appendChild(cell); // append the new cell to the new row
    tableBody.appendChild(row); // append the row to table body
   }}
</script>
</table>

也许我不是在解释自己。如果您需要更多信息,请询问。提前致谢。 EVA

2 个答案:

答案 0 :(得分:1)

尝试将密钥名称放入闭包中:

function wrapper(i) {
    return function() {
        doLocalStorage("key" + i)
}}
a.onclick = wrapper(i);

答案 1 :(得分:1)

不确定我的问题是否正确,但如果您想在执行for循环时异步绑定变量的用法,则应将其包装在闭包中:

    for(i = 1, c = arr.length; i < c; i++){
      (function(i){
        // i wont change inside this closure so bound events will retain i
        $('#id'+i).click(function(){
          alert(i); // Will alert the corresponding i
        })
      })(i);
    }