我有这些图像:
<div id="dvSource">
<img id="image0" img alt="image0" src="upload/<?php echo $user_id; ?>/0" />
<img id="image1" img alt="image1" src="upload/<?php echo $user_id; ?>/1" />
</br>
<img id="image2" img alt="image2" src="upload/<?php echo $user_id; ?>/2" />
<img id="image3" img alt="image3" src="upload/<?php echo $user_id; ?>/3" />
</div>
并且可以使用我拥有的一些JavaScript将它们移动到其他div中。我正试图将它们的坐标存储在一个数组中,但它不起作用,这就是我所得到的:
var pos = $('#image0').position();
pos.top;
pos.left;
var pos1 = $('#image1').position();
pos.top;
pos.left;
var pos2 = $('#image2').position();
pos.top;
pos.left;
var pos3 = $('#image3').position();
pos.top;
pos.left;
var positions = ["1", "2", "3"];
document.getElementById("coordinatesjs").value = var positions;
我做错了什么?
我做错了什么?
主要有四件事:
-
你不是把位置放在一个数组中,你只是得到它们,然后把它们扔掉:
var pos = $('#image0').position(); pos.top; pos.left;
-
稍后的语法
var positions = ["1", "2", "3"];
确实是直接创建数组的正确方法,但该数组只包含字符串"1"
、"2"
和"3"
,与之前的pos
(或pos1
等(变量无关。您可以将该语法与获取位置相结合,如下所示:
var positions = [ $('#image0').position(), $('#image1').position(), $('#image2').position(), $('#image3').position() ];
然而,您可能更适合动态地执行,但要在
#dvSource
元素中找到img
元素:var positions = $("#dvSource img").map(function() { return $(this).position(); }).get();
它使用
map
来获得包含位置对象的jQuery对象,并使用get
来获得它的实际数组 -
您不需要在每次使用变量之前使用
var
,因此这行代码是一个语法错误:document.getElementById("coordinatesjs").value = var positions; // Here -----------------------------------------^
只需移除
var
即可。但请参见#4。 -
将对象数组分配给
input
的value
属性时,将不会得到任何有用的东西,只有"[object Object],[object Object],[object Object]"
。您需要以某种方式格式化这些值。下面是一个将它们格式化为有效JSON(用于数据交换的文本表示法(的示例:document.getElementById("coordinatesjs").value = JSON.stringify(positions);
= var positions
不是有效的JS<br/>
而非</br>
- 你实际上没有在任何地方存放任何东西
以下是一些实际执行的代码
var positions = [];
$(".img").each(function() {
positions.push($(this).position()); // or push({ "top":position.top,"left":position.left});
})
$("#coordinatesjs").html(
JSON.stringify(positions) // convert to string
.replace(/},/g,"}<br/>") // replace }, with <br/>
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="dvSource">
<img id="image0" class="img" alt="image0" src="https://via.placeholder.com/350x150&text=0" />
<img id="image1" class="img" alt="image1" src="https://via.placeholder.com/350x150&text=0" />
<br />
<img id="image2" class="img" alt="image2" src="https://via.placeholder.com/350x150&text=0" />
<img id="image3" class="img" alt="image3" src="https://via.placeholder.com/350x150&text=0" />
</div>
<div id="coordinatesjs"></div>