Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取';顶部';删除元素的位置属性_Javascript_Jquery_Position_Typeerror_Jsplumb - Fatal编程技术网

Javascript 获取';顶部';删除元素的位置属性

Javascript 获取';顶部';删除元素的位置属性,javascript,jquery,position,typeerror,jsplumb,Javascript,Jquery,Position,Typeerror,Jsplumb,我正在处理一个项目,在这个项目中,我必须拖放元素,并对这些元素执行一些进一步的操作。目前,我正在尝试获取容器上丢弃的元素的位置,但调试器中出现以下错误 错误 trail.js:262未捕获类型错误:无法读取未定义的属性“top” 上下文中的方法 function saveFlowchart(){ var nodes = []; ////////////////////////////////////////////////////////////////// //Cod

我正在处理一个项目,在这个项目中,我必须拖放元素,并对这些元素执行一些进一步的操作。目前,我正在尝试获取容器上丢弃的元素的位置,但调试器中出现以下错误

错误

trail.js:262未捕获类型错误:无法读取未定义的属性“top”

上下文中的方法

function saveFlowchart(){
    var nodes = [];

    //////////////////////////////////////////////////////////////////
    //Code in Context to the question//

    var matches = [];
    var searchEles = document.getElementById("container").children;
    for(var i = 0; i < searchEles.length; i++) 
    {
        matches.push(searchEles[i]);
        alert("elements: "+ searchEles[i].id);
        var idOfEl = searchEles[i].id;

        var $element = $(idOfEl);
        var position = $element.position();
        position.bottom = position.top + $element.height();
        position.right = position.left + $element.width();
        alert("Top position: " + position.top + "\nLeft position: " + position.left + "\nBottom position: " + position.bottom + "\nRight position: " + position.right);
    }    
    /////////////////////////////////////////////////////

    $(".node").each(function (idx, elem) {
        var $elem = $(elem);
        var endpoints = jsPlumb.getEndpoints($elem.attr('id'));
        console.log('endpoints of '+$elem.attr('id'));
        console.log(endpoints);
        nodes.push({
            blockId: $elem.attr('id'),
            nodetype: $elem.attr('data-nodetype'),
            positionX: parseInt($elem.css("left"), 10),
            positionY: parseInt($elem.css("top"), 10)
        });
    });
    var connections = [];
    $.each(jsPlumb.getConnections(), function (idx, connection) {
        connections.push({
            connectionId: connection.id,
            pageSourceId: connection.sourceId,
            pageTargetId: connection.targetId
        });
    });

    var flowChart = {};
    flowChart.nodes = nodes;
    flowChart.connections = connections;
    flowChart.numberOfElements = numberOfElements;

    var flowChartJson = JSON.stringify(flowChart);
    //console.log(flowChartJson);

    $('#jsonOutput').val(flowChartJson);
}
函数保存流程图(){
var节点=[];
//////////////////////////////////////////////////////////////////
//根据问题的上下文编写代码//
var匹配=[];
var searchEles=document.getElementById(“容器”).children;
对于(var i=0;i
此方法保存连接并以json格式输出。但是我也需要重新生成定制的元素。这就是为什么我要尝试找到这些位置并重新生成它们,以便重新创建创建的流程图


在此方面的任何帮助都将不胜感激

以下内容可能会有所帮助

前一行代码

var $element = $(idOfEl);
更改为

 var $element = $("#" + searchEles[i].id);