首页 > 技术文章 > 怎样动态循环的在同一循环下取出并打印对象内容

tianyu-cj 2017-02-23 16:06 原文

方法一:建立数组,动态的将对象内的内容push到数组内,然后通过对button设置`id = "字符串" + i;`的方式来保存一个伪下标,便于我们在取数组内容时使用;

通过对button设置onclick事件来动态打印对象内容,在函数内,我们通过对id的字符串的拆分来分解出数组需要的下标的index,最后直接通过`objArr[i].info();动态打印对应数据

function stuFuc(){
  var arr = [1,2,3,4];
  var objArr = [];
  for (var i = 0; i < 30; i++) {
    var objA = {
    name:"张"+(i+1),
    age:23,
    infoData:arr,
    info: function(){
        console.log("objA的姓名:" + this.name + "年龄:" + this.age + "data:" + this.infoData);
      }
    };
    objArr.push(objA);
    var btn = document.createElement("button");
    btn.innerHTML = objA.name;
    btn.id = "btn_" + i;
    btn.onclick = function(){
    //使用获取数组下标的方式来进行对象内容的调用
    var btnId = event.target.id;
    var _index = btnId.slice(btnId.indexOf("_") + 1);
    objArr[_index].info();
   }
  document.getElementsByTagName("body")[0].appendChild(btn);
}

}

方法二:直接将for循环的循环变量 i 使用 let 来声明,即可直接用 i 来作为数组下标动态打印数据

function stuFuc(){
  var arr = [1,2,3,4];
  var objArr = [];
  for (let i = 0; i < 30; i++) {
    var objA = {
    name:"张"+(i+1),
    age:23,
    infoData:arr,
    info: function(){
        console.log("objA的姓名:" + this.name + "年龄:" + this.age + "data:" + this.infoData);
      }
    };
    objArr.push(objA);
    var btn = document.createElement("button");
    btn.innerHTML = objA.name;
    btn.id = "btn_" + i;
    btn.onclick = function(){
    //将for循环遍历的变量类型var修改为let来获取数组下标
    objArr[i].info();
  }
  document.getElementsByTagName("body")[0].appendChild(btn);
}


}

 

 

 

总结:对于ES6新增的内容进行全面了解,区分let和var之间的作用域区别

推荐阅读