jquery JavaScript无法访问数组或对象

jw5wzhpr  于 11个月前  发布在  jQuery
关注(0)|答案(1)|浏览(170)

我正在编写一个脚本,该脚本将循环执行类似于以下内容的内容

$( document ).ready(function() {

  let myObj = {};

  initLoop();

  function initLoop() { //this loads the initial frames into the object
    $('.looper').each(function(i, e){
      var attr1 = $(this).attr('attr1');
      var attr2 = $(this).attr('attr2');
      var attr3 = $(this).attr('attr3');
      var contents = $(this).html();
      myObj[attr1][attr2][attr3] = contents;
    });
  }
});

字符串
我在循环一组这样的div...

<div class="looper" attr1="1" attr2="1" attr3="1">content</div>
<div class="looper" attr1="1" attr2="1" attr3="2">content</div>
<div class="looper" attr1="1" attr2="1" attr3="3">content</div>
<div class="looper" attr1="1" attr2="2" attr3="1">content</div>
<div class="looper" attr1="1" attr2="2" attr3="2">content</div>
<div class="looper" attr1="1" attr2="2" attr3="3">content</div>
<div class="looper" attr1="1" attr2="3" attr3="1">content</div>
<div class="looper" attr1="1" attr2="3" attr3="2">content</div>
<div class="looper" attr1="1" attr2="3" attr3="3">content</div>


我得到了错误
jQuery.Deferred exception:Cannot read properties of undefined(阅读“1”)TypeError:Cannot read properties of undefined(阅读“1”)
我不明白为什么这不管用。
有人能提出一些修改吗?

0h4hbjxa

0h4hbjxa1#

问题似乎与您试图访问可能尚不存在的对象的属性有关。具体而言,当您尝试访问myObj[attr1][attr2][attr3]时,可能myObj[attr1]myObj[attr1][attr2]未定义。
要解决这个问题,你需要确保在尝试访问对象层次结构的属性之前,对象层次结构的每个级别都存在。下面是你的代码的更新版本:

$(document).ready(function () {
  let myObj = {};

  initLoop();

  function initLoop() {
    $('.looper').each(function (i, e) {
      var attr1 = $(this).attr('attr1');
      var attr2 = $(this).attr('attr2');
      var attr3 = $(this).attr('attr3');
      var contents = $(this).html();

      // Make sure the nested objects exist before assigning values
      myObj[attr1] = myObj[attr1] || {};
      myObj[attr1][attr2] = myObj[attr1][attr2] || {};
      myObj[attr1][attr2][attr3] = contents;
    });
  }
});

字符串
这个修改确保了myObj[attr1]myObj[attr1][attr2]在它们还不存在的时候被初始化为空对象。这样,你就不会遇到“Cannot read properties of undefined”错误。
请确保根据您的确切要求和数据结构调整此代码。

相关问题