Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何生成javascript数组生成的html变量的可拖动元素_Javascript - Fatal编程技术网

如何生成javascript数组生成的html变量的可拖动元素

如何生成javascript数组生成的html变量的可拖动元素,javascript,Javascript,javascript数组jArray有5个元素。 我将它们传递到HTML数组hArray中。 现在,我想把元素从hArray中拖出,比如说10号元素拖入hFrame。 最后一个坏了 问题是我们如何使html变量的可拖动元素 由javascript数组生成。我发现的示例涉及固定数量的元素,这些元素是用html预定义的。下面是由javascript生成的一系列单词,长度为uknown 提前谢谢大家 <!-- THIS IS THE FRAME TO SEND THE DRAGGABLE ELE

javascript数组jArray有5个元素。 我将它们传递到HTML数组hArray中。 现在,我想把元素从hArray中拖出,比如说10号元素拖入hFrame。 最后一个坏了

问题是我们如何使html变量的可拖动元素 由javascript数组生成。我发现的示例涉及固定数量的元素,这些元素是用html预定义的。下面是由javascript生成的一系列单词,长度为uknown

提前谢谢大家

<!-- THIS IS THE FRAME TO SEND THE DRAGGABLE ELEMENTS -->
<div id="hFrame";
style="text-align: left;
border:1px solid white;
width: 350px;
height: 200px;
padding: 10px";
ondrop= "drop(event)";
ondragover= "allowDrop(event)"></div>

<!-- THIS IS THE HTML VARIABLE hArray -->
<div id="hArray"></div>

<!-- THESE ARE THE FUNCTIONS FOR DRAGGING -->
<script>
    function drag(ev) {
        ev.dataTransfer.setData("text", ev.target.id);
    }

    function drop(ev) {
        ev.preventDefault();
        var data = ev.dataTransfer.getData("text");
        ev.target.appendChild(document.getElementById(data));
    }

    function allowDrop(ev) {
        ev.preventDefault();
    }
</script>


<!--  THIS IS THE SCRIPT FOR PRODUCING THE jArray WHICH PASSES ITS ELEMENTS TO hArray -->
<script>
    class Array {
        constructor(){
            this.length=0; 
            this.data={}; 
        }
        push(element){ 
            this.data[this.length]=element; 
            this.length++; 
            return this.length
        } 
        getElementAtIndex(index){ 
            return this.data[index]; 
        }
    }

//pushing element  
    const jArray= new Array();
    jArray.push(12); 
    jArray.push(13);
    jArray.push(14); 
    jArray.push(10); 
    jArray.push(989);

    for (var y=0; y< jArray.length; y++) {
        document.getElementById("hArray").innerHTML += jArray.getElementAtIndex(y) + " ";
    }

</script>

您需要添加一些内容:

为可拖动项设置ondragstart事件 将属性draggable设置为true 为可拖动项定义属性id 所以,循环应该是这样的:

for (var y=0; y< jArray.length; y++) {
    document.getElementById("hArray").innerHTML += '<span draggable="true" ondragstart="drag(event)" id=' + y + '>' + jArray.getElementAtIndex(y) + "</span> " ;
}
请参阅沙盒中的完整示例:

防止使用保留关键字或接口创建新类。您将覆盖已存在的数组全局对象。我不使用保留关键字。我用的是哈雷和贾雷,它们不是保留的。但任何其他名称,而不是这些,产生相同的。类数组来自另一个广泛使用的示例,它也不会引起问题。谢谢你的评论。我以后会处理的。它很有效!!!非常感谢你!!!这是一个非常聪明的解决办法。