繁体   English   中英

无法调用未定义的方法“ setData”

[英]Cannot call method 'setData' of undefined

编辑1

使用dataTransfer.setData方法使其有效!

http://jsfiddle.net/UH7Sf/1/

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM