Javascript 如何拖放数组
但是我的Javascript 如何拖放数组,javascript,html,arrays,drag-and-drop,Javascript,Html,Arrays,Drag And Drop,但是我的数据在drop上是这样的: [ <1 empty space>, "my_string1", Array[2], <3 empty spaces>, "my_string2"… ] 我的数组已在他的元素中“分解”,因此我选择的列表\u exe_与以前没有相同的索引,这就是问题所在 有没有简单的方法来解决这个问题?我可以手动重建阵列,但可能可以在不丢失格式的情况下传输数据,或者可以传递多组数据 编辑: 我可能是错的,但最后看起来您无法直接传递数组。我不熟悉事件。数
数据
在drop
上是这样的:
[ <1 empty space>, "my_string1", Array[2], <3 empty spaces>, "my_string2"… ]
我的数组已在他的元素中“分解”,因此我选择的列表\u exe_
与以前没有相同的索引,这就是问题所在
有没有简单的方法来解决这个问题?我可以手动重建阵列,但可能可以在不丢失格式的情况下传输数据,或者可以传递多组数据
编辑:
我可能是错的,但最后看起来您无法直接传递数组。我不熟悉
事件。数据传输
,但由于您传递的是文本,因此您需要在数组上使用JSON.stringify
和JSON.parse
。我已经修改了您的代码以包含这些
,my_string,first_element_of_my_array,second_element_of_my_array,,,,my_string2...
document.getElementById('canvas_-map').addEventListener(
“dragstart”,函数(事件){
var list_exe_selected=[];
var image_match=[];
//[…]查找图像匹配的代码将是htmlcollection
列表_exe_所选[i]=[];
对于(var j=0;jAlso,pleeeaaase不使用Snakecase。Camelcase是JavaScript标准。请参阅。
,my_string,first_element_of_my_array,second_element_of_my_array,,,,my_string2...
document.getElementById('canvas_map').addEventListener(
'dragstart', function(event) {
var list_exe_selected=[];
var image_match=[];
//[...] code to find images image_match will be an htmlcollection
list_exe_selected[i]=[];
for (var j=0; j<image_match.length; j++) {
var str=image_match[j].href.baseVal;
list_exe_selected[i].push(str);
};
// Turns the array into a JSON string
list_exe_selected = JSON.stringify(list_exe_selected);
// saves the array as 'text' or a string
event.dataTransfer.setData('text', list_exe_selected);
}
document.getElementById('canvas_map').addEventListener(
'dragover', function(event) {
event.preventDefault();
});
document.getElementById('canvas_map').addEventListener(
'drop', function(event) {
// gets the array as a string or 'text'
var data = event.dataTransfer.getData('text');
// formats the saved string into an array
data = JSON.parse(data);
var list_exe_selected=data.split(',');
for (var i=1; i<list_exe_selected.length; i++) {
exe_selected=list_exe_selected[i];
//do stuff
};
};