[英]Cannot call method 'setData' of undefined
编辑1
使用dataTransfer.setData方法使其有效!
d3.event.dataTransfer.setData('type',type);
我在d3.event中使用setData和getData方法遇到问题
我必须在顶部使用div元素拖动img元素,在第二个中使用一些放置功能。
d3.select('img').on('dragstart', function() {
var type = d3.select(this).attr('type');
console.log("Drag starts with "+ type);
d3.event.transfer.setData('type',type);
});
d3.select('.drop').on('drop', function() {
d3.event.preventDefault();
var type = d3.event.transfer.getData('type');
console.log("Drag ends with "+ type);
});
d3.select('.drop').on('dragover', function() {
d3.event.preventDefault();
});
这是小提琴: http : //jsfiddle.net/UH7Sf/
还有另一种解决方案(使用d3做到这一点(在拖放中传输数据)?
在event
内部没有任何对象称为transfer
。 您可以做的一件事是尝试event.setData()
,但我也不是您想要的,因为dragstart和drop事件是两个不同的事件对象。
您可以改为使用单独的局部变量。 例如
var draggedType = null;
d3.select('img').on('dragstart', function() {
var draggedType = d3.select(this).attr('type');
console.log("Drag starts with "+ draggedType);
});
d3.select('.drop').on('drop', function() {
d3.event.preventDefault();
console.log("Drag ends with "+ draggedType);
// do something with draggedType here
draggedType = null; // reset draggedType to null when done, just in case
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.