在 javascript 中动态地在元素数组上启动 ondrag
ondragstart on an array of elements dynamically in javascript
我有一组图像元素,
var im = ["im1","im2"]; // from db or local drive
然后动态创建图像为:
var l = imagelist.length;
for (var i = 0; i < l; ++i) {
if (i in im) {
var s = im[i];
var img = document.createElement("img");
img.src = s;
img.width = width;
img.draggable = true;
var body = document.getElementById("body");
body.appendChild(img);
this.addEventListener('ondragstart', function(event) {
alert(event.target.id);
event.dataTransfer.setData('text/plain', event.target.id);
});
}
虽然 ondragstart
事件触发,但 alert(event.target.id);
显示空白。
这就是拖放功能不适用于动态创建的图像数组的原因。
尽管尝试使用单个图像标签进行拖动 <img>
效果绝对不错,但图像数组无法以这种方式工作。
有什么解决办法吗?
您还没有为您的任何元素分配 id
。
像这样应该可以解决问题:
var img = document.createElement("img");
img.src = s;
img.id = "image_" + i;
// The rest of your assignments and code...
我有一组图像元素,
var im = ["im1","im2"]; // from db or local drive
然后动态创建图像为:
var l = imagelist.length;
for (var i = 0; i < l; ++i) {
if (i in im) {
var s = im[i];
var img = document.createElement("img");
img.src = s;
img.width = width;
img.draggable = true;
var body = document.getElementById("body");
body.appendChild(img);
this.addEventListener('ondragstart', function(event) {
alert(event.target.id);
event.dataTransfer.setData('text/plain', event.target.id);
});
}
虽然 ondragstart
事件触发,但 alert(event.target.id);
显示空白。
这就是拖放功能不适用于动态创建的图像数组的原因。
尽管尝试使用单个图像标签进行拖动 <img>
效果绝对不错,但图像数组无法以这种方式工作。
有什么解决办法吗?
您还没有为您的任何元素分配 id
。
像这样应该可以解决问题:
var img = document.createElement("img");
img.src = s;
img.id = "image_" + i;
// The rest of your assignments and code...