【问题标题】:Creating arrays and datasets with javascript and jquery使用 javascript 和 jquery 创建数组和数据集
【发布时间】:2013-07-28 10:36:54
【问题描述】:

我编写了一个代码,可以为我安排一个积分表,但是当我指定 arrayOfDivs 时,一切都很好:http://jsfiddle.net/u58k6/6

var arrayOfDivs = [({topPosition : 99, leftPosition: 100}),({topPosition : 150, leftPosition: 400}),({topPosition : 578, leftPosition: 10})];

当我尝试基于其他事物动态创建此 arrayOfDivs 时,当我添加此代码以创建 arrayOfDivs 时:

var arrayOfDivs = [];

$("#table .draggable").each(function(index, item){
   var lat = $(item).attr("lat");
   var lng = $(item).attr("lng");
   var top = $(this).position().top;
   var left = $(this).position().left;
   arrayOfDivs.push({topPosition : top, leftPosition: left, lat : lat, lng : lng});
});

var height = $('table').height();
var rowsCount = $('table tr').length;
var ROW_HEIGHT = height/rowsCount;

最终版本:http://jsfiddle.net/u58k6/10/,我只是在控制台中收到此错误:Uncaught TypeError: Cannot call method 'push' of undefined

为什么?问题是什么?

【问题讨论】:

    标签: javascript jquery arrays function add


    【解决方案1】:

    您的arrayOfDivs 正在成功创建。

    TypeError 出现在您的问题中未显示的行上。在这里:

    var rowNumber = Math.floor(position.topPosition / ROW_HEIGHT);
    rows[rowNumber].push(position);
    

    因为position.topPosition 可以是负数,这意味着rowNumber 可以是负数,这意味着您正在尝试执行rows[-1].push(position),它本质上是undefined.push(position)

    Add a console.log(rowNumber); statement 就在 .push() 之前,你会看到 -1。)

    当您对arrayOfDivs 进行硬编码时,您不会遇到此问题,因为您指定的所有位置都不是负数。当您获取页面上实际元素的位置时,您可能会得到负数。

    我没有关于如何解决此问题的具体建议,因为我(还)不确定您实际上想要实现什么。但我希望这足以让您继续自己修复它。

    【讨论】:

    • 我试了,但还是一样 Uncaught TypeError: Cannot call method 'push' of undefined
    • 我尝试做的是:在数组中排列 div,首先按行,所以一行 = 一个新数组,然后按左侧排列创建的每个新数组
    • 请尝试解决这个问题
    • 你可以添加 if(rowNumber 就在我引用的 var 语句之后。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-28
    • 2017-06-16
    • 1970-01-01
    相关资源
    最近更新 更多