javascript - 如何使用 JavaScript 获取掉落元素的类名?

标签 javascript

我的容器和元素很少。我想将一个项目拖到容器中并获取所拖放项目的类名。

获取类名非常简单 .className 但不起作用

这是我正在使用的一些代码(places[i] 是循环的一部分,因此为了澄清起见,我没有包含整个代码):

places[i].addEventListener('drop', function(e){
  console.log(this.childNodes[0].className  );
});

这不起作用,错误是“无法读取属性'className'”。我尝试了 this.childNodes 并得到:

[item: function]
  0: div.coins.blue
    ....
    className: "coins blue"
    ...

我确实尝试了 this.childNodes['item'] 记录了 function item() { [native code] }。不知道该去哪里

这是基本代码http://jsbin.com/wadavuci/1/edit?js,console,output

谢谢

最佳答案

使用拖放时,您必须在 dragstart 事件中手动设置要传输的数据。使用事件的 dataTransfer 对象的 setData() 成员设置数据:

for (var i=0; i<coins.length; i++) {
    coins[i].addEventListener('dragstart', function(e){
        e.dataTransfer.setData("text/plain", this.className);
    });
}

同样,必须在drop事件中读取传输的数据:

for (var i=0; i<places.length; i++) {   
    places[i].addEventListener('drop', function(e){
        console.log(e.dataTransfer.getData("text/plain"));
    });
    /* ... */
};

Native HTML5 Drag and Drop文章关于http://www.html5rocks.com/很好地介绍了如何处理拖放。

关于javascript - 如何使用 JavaScript 获取掉落元素的类名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21965486/

相关文章:

javascript - 电子邮件的正则表达式

javascript - 如何使用 useContext 更改 Context 的值?

javascript - jQuery 的append() 和 data()

javascript - RethinkDB 和 Node.js/Express - 为并行查询打开多个连接?

javascript - 带有循环和var的多个元素的jQuery切换类

javascript - 根据选择的选项值更改 css

javascript - 如何将新添加的元素存储到变量中?

javascript 排序不能正确处理字符串

javascript - 如何使用 JavaScript 或 CSS 仅显示 H2 标题的第一个单词

javascript - Angular Js : error message get displayed utill page load completes