我试图找出一种方法来解决如何在javascript中以某种列表或数组存储数据的方法。我有三个变量叫做id,left和top。所有都在函数
id:作为参数传递给函数的元素的索引。 left:在函数内计算 top:在函数中计算
我正在寻找的是每次我调用具有不同id的函数时,该函数应该能够计算并存储left和top,并以某种方式存储id,left和top,以便我可以在另一个函数中访问它们呼叫。
或者我可以使用对象来使用值吗?
功能:
function getCoordinates(id) {
scroll_value_Y = document.getElementById("svg_editor").scrollTop;
scroll_value_X = document.getElementById("svg_editor").scrollLeft;
offset_x = 298;
offset_y = 102;
var p = $('#' + id);
var offset = p.offset();
var left = Math.round(offset.left - offset_x + scroll_value_X);
var top = offset.top - offset_y + scroll_value_Y;
//something to store
}
在另一个函数调用中使用:
drawAggregate(getCoordinates(a1).left, getCoordinates(a1).top, getCoordinates(a2).left, getCoordinates(a2).top);
或类似的东西。我该如何实现呢?
答案 0 :(得分:1)
你可以使用对象。
您可以将对象传递给函数,如下所示:
(function(){
function incId(data){
var id = data.id;
data.id = id++;
}
function checkId(data){
console.log(data.id);
}
var data = {id:0};
incId(data);
checkId(data);
}());
答案 1 :(得分:1)
是的,只需返回Object
。
function getCoordinates(id) {
scroll_value_Y = document.getElementById("svg_editor").scrollTop;
scroll_value_X = document.getElementById("svg_editor").scrollLeft;
offset_x = 298;
offset_y = 102;
var p = $('#' + id);
var offset = p.offset();
var left = Math.round(offset.left - offset_x + scroll_value_X);
var top = offset.top - offset_y + scroll_value_Y;
// Here we create and return an object with two keys: left and top
return {
top: top,
left: left
}
}
并且,为了避免两次计算值,您可以将值存储在其他对象a1Coords
和a2Coords
中:
var a1Coords = getCoordinates(a1);
var a2Coords = getCoordinates(a2);
drawAggregate(a1Coords.left, a1Coords.top, a2Coords.left, a2Coords.top);
我假设您的坐标每次都会改变,因此您实际上并不想在getCoordinates
函数中存储坐标,而只是计算并返回它们。
答案 2 :(得分:1)
您可以返回一个对象:
function getCoordinates(id)
{
var scroll_value_Y = document.getElementById("svg_editor").scrollTop;
var scroll_value_X = document.getElementById("svg_editor").scrollLeft;
var offset_x = 298;
var offset_y = 102;
var p = $('#' + id);
var offset = p.offset();
return {
left: Math.round(offset.left - offset_x + scroll_value_X),
top : offset.top - offset_y + scroll_value_Y
};
}
var coords1 = getCoordinates(a1);
var coords2 = getCoordinates(a2);
drawAggregate(coords1.left, coords1.top, coords2.left, coords2.top);