javascript - 如何制作由 javascript 数组生成的 html 变量的可拖动元素
问题描述
一个 JavaScript 数组 (jArray) 有 5 个元素。我将它们传递到 HTML 数组 (hArray) 中。现在,我想将元素从 hArray(比如说数字 10)拖到 hFrame 中。这最后一个不起作用。
问题在于我们如何制作由 javascript 数组生成的 html 变量的可拖动元素。我发现的示例涉及固定数量的元素,在 html 中预定义。这是关于由 javascript 生成的长度未知的单词序列。
提前谢谢大家。
<!-- 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
为真 - 定义
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> " ;
}
在沙盒中查看我的完整示例: https ://jsfiddle.net/denisstukalov/73zntmvd/29/#&togetherjs=tVJr9JjkUn
推荐阅读
- createml - CreateML 使 stateIn 可选
- performance - JMeter - 如何在 60 秒内每 30 秒只执行一个线程组测试
- sql - SQL:计算两个时间间隔之间的工作时间
- linq - 我可以使用 .net core 3.1 中的连接表过滤 IQueryable 中的查询吗
- flexbox - 如何将可调整大小的 ExtJS Ext.Panel 停靠在另一个可调整大小的停靠面板中
- sql-server - 每次在不同的服务器上运行脚本时,是否会生成具有不同占位符名称的未命名约束?
- postgresql - 无法在 Postgres 中访问公共模式中的表
- .htaccess - .htaccess 使用 RewriteCond% {TIME} 重定向特定文件夹
- xcode - 安装 Cocoapods 的问题
- javascript - Chrome扩展弹出页面滚动在mac os上不起作用