Javascript 是否可以在一个对象内同时传输两个属性?
我已经在通过拖放传输“id”。但我想转移第二个属性“name”。这可能吗?如果可能,我将如何在代码中更改它Javascript 是否可以在一个对象内同时传输两个属性?,javascript,html,drag-and-drop,Javascript,Html,Drag And Drop,我已经在通过拖放传输“id”。但我想转移第二个属性“name”。这可能吗?如果可能,我将如何在代码中更改它 function drag_start(event) { _('app_status').innerHTML = "Dragging the "+event.target.getAttribute('id'); event.dataTransfer.dropEffect = "move"; event.dataTransfer.setData("text", eve
function drag_start(event) {
_('app_status').innerHTML = "Dragging the "+event.target.getAttribute('id');
event.dataTransfer.dropEffect = "move";
event.dataTransfer.setData("text", event.target.getAttribute('id') );
event.dataTransfer.setData("text", event.target.getAttribute('name') );
}
function drag_drop(event) {
event.preventDefault();
var hr = new XMLHttpRequest();
var url = "test_parse_example.php";
var elem_id = event.dataTransfer.getData("text");
var name = event.dataTransfer.getData("text");
var event_id = event.target.getAttribute('id');
var value = event.target.getAttribute('value');
var time = document.getElementById("display").innerHTML = displayHours + ":" + displayMinutes + ":" + displaySeconds;
var vars = "elem_id="+elem_id+"&event_id="+event_id+"&value="+value+"&time="+time+"&name="+name;
hr.open("POST", url, true);
hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
hr.onreadystatechange = function() {
if(hr.readyState == 4 && hr.status == 200) {
var return_data = hr.responseText;
document.getElementById("status").innerHTML = return_data;
}
}
hr.send(vars);
}
请看
不能调用DataTransfer.setData(“文本”、“您的数据”)两次,第二个值将覆盖第一个值
setData()的第一个参数是mime类型字符串,一个类型只能设置一次,如果要设置2个值,可以:
event.dataTransfer.setData(
"text",
event.target.getAttribute('id')+','+ event.target.getAttribute('name'));
然后像这样获取数据:
var val = event.dataTransfer.getData("text").split(',');
var elem_id = val[0];
var name = val[1];
当然,您的名称不能包含字符“”,或者您可以更改为其他难以复制的字符,如“^”或“%”什么不起作用?
name
的值是否在url中变为undefined
?感谢您的帮助!我理解您的第一部分,所以我使用event.dataTransfer.setData(“text”,event.target.getAttribute('id,name'));但是,如何提取每个属性呢?var elem_id=event.dataTransfer.getData(“文本”);var name=event.dataTransfer.getData(“文本”);你能用一段代码或我的代码来解释吗。很抱歉,如果我只是愚蠢地获取数据(“text.split”(“,”[0]);这和你的意思一致吗?
event.dataTransfer.setData("text", event.target.getAttribute('id') );
event.dataTransfer.setData("text1", event.target.getAttribute('name') );
var elem_id = event.dataTransfer.getData("text");
var name = event.dataTransfer.getData("text1");