Возможно ли передать два атрибута в пределах одного объекта одновременно? - PullRequest
2 голосов
/ 22 мая 2019

Я уже передаю "id" через перетаскивание.Но я бы хотел передать второй атрибут "имя".Возможно ли это, и если да, то как бы это изменить в моем коде

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

Ответы [ 2 ]

0 голосов
/ 23 мая 2019
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");
0 голосов
/ 23 мая 2019

Пожалуйста, посмотрите this (Перетащите данные)

Вы не можете дважды вызвать DataTransfer.setData ("text", "your data"), второе значение будет переопределено первым.

Первым параметром setData () является строка типа MIME, один тип можно просто установить один раз, если вы хотите установить значение 2, вы можете:

  1. использовать setData ("текст"), "id, name") и используйте split с помощью "," для извлечения
  2. используйте setData ("application / json", '{"id": "id", "name": "name"}'), затем читайте как объект.

пример для 1-го пути:

event.dataTransfer.setData(
    "text", 
    event.target.getAttribute('id')+','+ event.target.getAttribute('name'));

затем getData вот так:

var val = event.dataTransfer.getData("text").split(',');
var elem_id = val[0];
var name = val[1];

Конечно, ваше имяне может содержать символ ',' или вы можете заменить его другим символом, который трудно скопировать, например '^' или '%'

...