我正在尝试学习HTML5“DnD”。
我有一个用PHP创建的HTML表。
echo "<li class='elements' id='".$row['id']."' draggable='true'>".$row['element_nr']."</li>";
现在我想用javascript获取此文本。
element = document.getElementsByClassName('elements');
然后只是为了好玩,我想控制那个变量来查看其中的内容。所以我使用:
var element = document.getElementsByClassName('elements');
console.log(element);
现在当我检查我的控制台时,我什么也看不见。当我拖动文本时,我什么也看不见。我也试过“提示(元素);”
我怎样才能看到“var element”中的内容?
这是我的代码。(还没有真正工作)
JS
$(document).ready(function(){
function doFirst(){
element = document.getElementsByClassName('elements');
element.addEventListener('dragstart', startDrag, false);
drop_element = document.getElementById('drop_element');
drop_element.addEventListener('dragenter', function(e){e.preventDefault();}, false);
drop_element.addEventListener('dragover', function(e){e.preventDefault();}, false);
drop_element.addEventListener('drop', dropped, false);
}
function startDrag(e){
var element = document.getElementsByClassName('elements');
console.log(element);
e.dataTransfer.setData('Text', element);
}
function dropped(e){
e.preventDefault();
drop_element.innerHTML = e.dataTranfer.getData('Text');
}
window.addEventListener('Load', doFirst, false);
});
HTML
<section id="drag_element">
<ul>
<?php echo "<li class='elements' id='".$row['id']."' draggable='true'>".$row['element_nr']."</li>";?>
</ul>
<section id="drop_element">
drop here
</section>
答案 0 :(得分:0)
这里的问题是永远不会调用doFirst()
,因为您附加的文件夹侦听器不正确。
此外,element.addEventListener
不起作用,因为它实际上是一个实时的元素数组。
试试这个
jQuery(function(){
function doFirst(){
jQuery('.elements').on('dragstart', startDrag);
jQuery('#drop_element').on('dragenter dragover', function(e) { e.preventDefault(); });
jQuery('#drop_element').on('drop', dropped);
}
function startDrag(e){
var elements = document.getElementsByClassName('elements');
console.log(elements);
e.dataTransfer.setData('Text', element);
}
function dropped(e){
e.preventDefault();
jQuery('#drop_element').html(e.dataTranfer.getData('Text'));
}
jQuery('window').on('load', doFirst);
});