function dropStart(e){
e.dataTransfer.setData("Text",e.target.id);
//e.dataTransfer.clearData();在这里调用clearData(),drop函数里的getData才会返回空值。
}
function drop(e){
var id=e.dataTransfer.getData("Text");
e.dataTransfer.clearData();
console.log(e.dataTransfer.getData("Text"));//还可以获得id
}
在drop函數裡呼叫e.dataTransfer.clearData()之後,執行getData("Text")還會傳回setData()裡的值,所以說clearData()要怎麼用啊,還是說在drop函數執行結束後dataTransfer.setData()保存的資料會自動刪除?
滿天的星座2017-05-18 10:58:51
我的輸出沒有問題啊,DataTransfer.clearData()只能用在dragstart事件中。
<p id="source" draggable="true">测试数据</p>
var draggable = document.getElementById('source');
draggable.addEventListener('dragstart', drop);
function drop (e) {
e.dataTransfer.setData("Text",e.target.id);
// 输出id:source
alert('id:' + e.dataTransfer.getData("Text"));
e.dataTransfer.clearData();
// 输出id:
alert('id:' + e.dataTransfer.getData("Text"));
}
阿神2017-05-18 10:58:51
clearData()只能用在dragStart函數,在drop函數裡是呼叫clearData()是沒用的,而且也沒必要,因為setData()保存的資料是在拖曳開始時創建,在拖曳放下也就是拖曳結束時,setData()儲存的資料會被銷毀。