Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否可以在一个对象内同时传输两个属性?_Javascript_Html_Drag And Drop - Fatal编程技术网

Javascript 是否可以在一个对象内同时传输两个属性?

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

我已经在通过拖放传输“id”。但我想转移第二个属性“name”。这可能吗?如果可能,我将如何在代码中更改它

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个值,可以:

  • 使用setData(“text”、“id、name”),并使用带“,”的拆分来提取
  • 使用setData(“application/json”,“id:“id”,“name:“name”}”),然后作为对象读取
  • 第一种方式的示例:

    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");