[英]Dragging and dropping
我想将表内容拖放到文本框中。
HTML:
<table id = "carTypes">
<tr><th>Car Type</th><th>Price per mile</th></tr>
<tr><td carValue = "compact" draggable = "true" >Compact</td><td>$0.99</td></tr>
<tr><td carValue = "Intermediate" draggable = "true" >Intermediate</td><td>$1.99</td></tr>
<tr><td carValue = "Luxury" draggable = "true" >Luxury</td><td>$2.99</td></tr>
<tr><td carValue = "Limo" draggable = "true" >Limo</td><td>$4.99</td></tr>
</table><p>Drag and Drop from the above car-types list to below box: <input type = "text" id = "carTypeChosen" placeholder = 'car type you want' /></p>
JS:
var registerDragDrop = function() {
var dragSource = document.getElementById("carTypes");
dragSource.ondragstart = function(event) {
var dataToCopy = this.getElementsByTagName("td").getAttribute("carValue");
event.dataTransfer.setData("Text", dataToCopy);
return true;
};
var dropTarget = document.getElementById("carTypeChosen");
dropTarget.ondrop = function(event) {
this.value = event.dataTransfer.getData("Text");
event.preventDefault();
return false;
};
dropTarget.ondragover = function(event) {
event.preventDefault();
return false;
};
dropTarget.ondragend = function(event) {
event.preventDefault();
return false;
};
};
当我拖放汽车类型时,将丢弃空值而不是汽车值。我不知道我在做什么错。 请解释
您的代码经过一些更改后可以工作,在dragSource.ondragstart
函数中包含this
函数, this
函数返回所有表而不是删除td
这意味着当您尝试getAttribute("carValue")
会生成错误,因为表没有carValue
属性,因此请使用event.target
返回目标或在我们的情况下而不是this
丢弃td。
另外,您必须在定义后调用函数registerDragDrop()
。
JS变更
更换:
this.getElementsByTagName("td").getAttribute("carValue");
由:
var dataToCopy = event.target.getAttribute("carValue");
完整的JS:
var registerDragDrop = function() {
var dragSource = document.getElementById("carTypes");
dragSource.ondragstart = function(event) {
var dataToCopy = event.target.getAttribute("carValue");
event.dataTransfer.setData("Text", dataToCopy);
return true;
};
var dropTarget = document.getElementById("carTypeChosen");
dropTarget.ondrop = function(event) {
this.value = event.dataTransfer.getData("Text");
event.preventDefault();
return false;
};
dropTarget.ondragover = function(event) {
event.preventDefault();
return false;
};
dropTarget.ondragend = function(event) {
event.preventDefault();
return false;
};
};
希望能有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.