在 dataTransfer.setData 上设置多个数据

Dan*_*ves 2 html javascript razor razor-pages

可以使用 dataTransfer 设置多个吗?

HTML

<tr class="notfirst"
    draggable="true"
    ondragstart="drag(event, '@Model.getFormat(item)', '@Model.getColor(item)')"
    ondragover="allowDrop(event)"
>
Run Code Online (Sandbox Code Playgroud)

JS

function drag(ev, format, color) {
    ev.dataTransfer.setData("text", format);
    ev.dataTransfer.setData("text", color); 
}
Run Code Online (Sandbox Code Playgroud)

我可以正确地将format和传递color给我的 JS 函数,但我不能将两者都添加到,dataTransfer因为color替换了format. 我也尝试传递一个对象,但也没有用。

小智 5

您可以将数据推送到 JSON 对象,然后使用 JSON.stringify() 将该对象转换为字符串。之后,您将能够将整个字符串传递给 setData。

   let  obj = {prd_iId: 50 ,prd_sName: 'Ray Ban'};
   obj = {...obj, prd_sModel:'Aviator'};     
   e.dataTransfer.setData("text/plain", JSON.stringify(obj));
Run Code Online (Sandbox Code Playgroud)

那会做你想做的。