首页
学习
活动
专区
圈层
工具
发布

拖落
EN

Stack Overflow用户
提问于 2015-07-29 09:23:03
回答 1查看 42关注 0票数 0

我想把表格内容拖放到文本框里。

HTML :

代码语言:javascript
复制
<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 :

代码语言:javascript
复制
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;
    };
};

当我拖放汽车类型时,空值将被删除,而不是汽车值。我不知道我做错了什么。请解释一下

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-29 09:43:31

工频

在进行了一些更改之后,您的代码就有了返回所有表而不是删除的thisdragSource.ondragstart函数--这意味着当您尝试生成错误的getAttribute("carValue")时,因为表没有carValue attribut,所以在我们的示例中使用返回目标或丢弃td的event.target,而不是this

此外,您还必须在定义之后调用函数registerDragDrop()

JS更改

替换:

代码语言:javascript
复制
this.getElementsByTagName("td").getAttribute("carValue");

通过:

代码语言:javascript
复制
var dataToCopy = event.target.getAttribute("carValue");

完整JS :

代码语言:javascript
复制
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;
    };
};

希望能帮上忙。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31696323

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档