我正在尝试找出一种在 JavaScript 中将数据存储在某种列表或数组中的方法。我有三个变量,分别称为 id、left 和 top。全部都在函数中
id:作为参数传递给函数的元素的索引。 左:在函数内计算 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);
或者类似的东西。我该如何实现这个?
最佳答案
是的,只需返回一个对象
。
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);
我假设您的坐标每次都会发生变化,因此您实际上并不希望将坐标存储在 getCooperatives
函数中,而只想计算并返回它们。
关于javascript - 在javascript中存储多个数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37729332/