我有一些正在尝试使用循环进行优化的工作代码,但是在连接参数名称时遇到了麻烦。
var objlocations = {};
$.get('https://example.com/something/ajax-state?somevar=' + somevar, function(data) {
$.each(data, function(index,DBRow){
objlocations['point1x'] = DBRow.Point01X;
objlocations['point1y'] = DBRow.Point01Y;
objlocations['point2x'] = DBRow.Point02X;
objlocations['point2y'] = DBRow.Point02Y;
objlocations['point3x'] = DBRow.Point03X;
objlocations['point3y'] = DBRow.Point03Y;
objlocations['point4x'] = DBRow.Point04X;
objlocations['point4y'] = DBRow.Point04Y;
// There are about 30 more of these needed
var $grid = jQuery('#MyDiv');
$grid.empty();
for(var i=1;i<=4;i++) {
var x = objlocations['point' + i + 'x'];
var y = objlocations['point' + i + 'y'];
// doesnt' work: var x = 'DBRow.Point0'+i+'X';
// doesn't work: var y = 'DBRow.Point0'+i+'Y';
var $PointLocation = jQuery('<img class="PointLocation" id="Grid-Point-' + i + '"' + 'src="../img/points/point.png" width="50px">').css({top:y + 'px', left:x + 'px'});
$grid.append($PointLocation);
}
});
});
对于变量“ x”和“ y”,我想遍历并直接使用DBRow.PointxX,而不是首先手动将其转储到对象中,因为将需要60多行。
根据代码中的注释,我尝试了var x ='DBRow.Point0'+ i +'X',这导致“ x”具有“ DBRow.Point01X”等作为字符串值。
如果我尝试不使用以下引号:DBRow.Point0 + i + X,则会收到控制台错误,指出未定义X。
我还必须对DBRow.Point ## X上的前导0进行一些处理,但是我可以在要从中提取的数据库中执行此操作。
我是Java的新手,所以希望这是我忽略的简单事情。
编辑:
最终解决方案
$.get('https://example.com/something/ajax-state?somevar=' + somevar, function(data) {
$.each(data, function(index,DBRow){
var $grid = jQuery('#MyDiv');
$grid.empty();
for(var i=1;i<=32;i++) {
var ii = ('00'+i).slice(-2);
var x = DBRow["Point"+ii+"X"];
var y = DBRow["Point"+ii+"Y"];
var $PointLocation = jQuery('<img class="PointLocation" id="Grid-Point-' + i + '"' + 'src="../img/points/point.png" width="50px">').css({top:y + 'px', left:x + 'px'});
$grid.append($PointLocation);
}
});
});
最佳答案
移动评论以回答更多解释。
可以像命名数组项一样访问javascript中的对象。
DBRow.Point01X与DBRow ['Point01X']相同
您可以进行一个循环,在该循环中准备名称,然后将其插入数组。
例如:
i = (i < 10) ? ("0" + i) : i; // for leading zeros
var point = 'Point' + i + 'X';
objlocations['point'+i+'x'] = DBRow[point];
关于javascript - 串联Javascript函数的参数名称,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49062672/