-1

我想遍历一个对象数组,但我无法找到每个对象的键。我究竟做错了什么?

Javascript / jQuery 代码:

var position = [];

$('.box').each(function(){

var id = $(this).attr('id');

var offset = $(this).offset();

var offsetX = offset.left;

var offsetY = offset.top;

position.push('{"id":'+id+',"offX":'+offsetX+',"offY":'+offsetY+'}');

});

for (var i = 0; i < position.length; i++) {
  console.log(position[i].id); // i get the error of undefined
}

html标记:

<div id="parent">

    <div class="box" id="1">1</div>
    <div class="box" id="2">2</div>
    <div class="box" id="3">3</div>
    <div class="box" id="4">4</div>
    <div class="box" id="5">5</div>
    <div class="box" id="6">6</div>
    <div class="box" id="7">7</div>
    <div class="box" id="8">8</div>
    <div class="box" id="9">9</div>
    <div class="box" id="10">10</div>

</div> 

这里是jsfiddle

4

3 回答 3

1
position.push('{"id":'+id+',"offX":'+offsetX+',"offY":'+offsetY+'}');

好吧,这不是一个对象,而是一个 JSON 字符串(如果你很幸运并且它是有效的)。使用适当的对象文字:

position.push({"id":id, "offX":offsetX, "offY":offsetY});

然后您将能够访问其.id属性。

于 2015-03-31T00:52:16.490 回答
1

您正在向数组中添加一个字符串。您想添加一个对象。

position.push({id: id,offX: offsetX,offY: offsetY});
于 2015-03-31T00:54:09.870 回答
0

我查看了您的代码,似乎问题出在您的陈述上:

$('.box').each(function(){});

即使语法正确,也可能存在导致这种情况发生的其他问题。以下是一些可能有问题的建议:

  • 缺少您正在引用的 JQuery 文件,或者您根本没有引用文件。

确保您在此站点上找到了用于家庭测试/ServerTesting 的 JQuery 文件:单击此处

  • 确保您在脚本中引用了 JQuery 文件:
script src="jquery-1.11.2.min.js"
  • 如果您没有运行 html 5,请确保添加:
script type="javascript/text"
于 2015-03-31T01:30:23.630 回答