我正在编写一个脚本,该脚本将循环执行类似于以下内容的内容
$( 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”)
我不明白为什么这不管用。
有人能提出一些修改吗?
1条答案
按热度按时间0h4hbjxa1#
问题似乎与您试图访问可能尚不存在的对象的属性有关。具体而言,当您尝试访问
myObj[attr1][attr2][attr3]
时,可能myObj[attr1]
或myObj[attr1][attr2]
未定义。要解决这个问题,你需要确保在尝试访问对象层次结构的属性之前,对象层次结构的每个级别都存在。下面是你的代码的更新版本:
字符串
这个修改确保了
myObj[attr1]
和myObj[attr1][attr2]
在它们还不存在的时候被初始化为空对象。这样,你就不会遇到“Cannot read properties of undefined”错误。请确保根据您的确切要求和数据结构调整此代码。