gpt4 book ai didi

javascript - 保存并显示 Javascript 数组中删除的元素

转载 作者:行者123 更新时间:2023-12-01 01:43:12 26 4
gpt4 key购买 nike

将一些元素放入框中并单击提交按钮后,我尝试将它们保存到数组中并将它们显示在页面上的另一个段落中。

我写了这段代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Example of HTML5 Drag and Drop</title>
<script type="text/javascript">
function dragStart(e){
e.dataTransfer.effectAllowed = "move";
e.dataTransfer.setData("Text", e.target.getAttribute("id"));
}
function dragOver(e){
e.preventDefault();
e.stopPropagation();
}
function drop(e){
e.stopPropagation();
e.preventDefault();
var data = e.dataTransfer.getData("Text");
e.target.appendChild(document.getElementById(data));

//when i dropped an element and if i made mistake, by clicking on element i remove it from dropbox
var txt1 = document.getElementById(data);
txt1.onclick = function () {
document.getElementById(data).remove();
this.remove();};
}
</script>

<style type="text/css">
#dropBox{
width:150px;
height:auto;
border: 1px solid gray;
background: lightyellow;
text-align: left;
margin: 20px 0;
color: orange;
}
#dropBox{
margin: 10px;
}
</style>
</head>

<body >
<h2>Drag & Drop Demo</h2>
<p>Drag and drop the image into the drop box:</p>
<div id="dropBox" ondragover="dragOver(event);" ondrop="drop(event);"
</div>

<!--for some reason when i drop element in dropbox, it doesn't go in new line, so i wrote this <br>. If you have better solution, please tell me.-->
<label id="dragA" draggable="true" ondragstart="dragStart(event);">Marko
Maric<br></label>
<label id="dragB" draggable="true" ondragstart="dragStart(event);">Ana
Ladic<br></label>
<label id="dragC" draggable="true" ondragstart="dragStart(event);">Ivan Saric<br></label>

<input type='button' onclick='saveAndDisplay()' value='Submit'/>

<!--by clicking on submit button, I want the names i picked to display in this paragraph-->

<p id="demo">"Names are":</p>

</body>
</html>

我尝试将元素保存到数组中,但是当我想显示它们时,我得到了:[object HTMLLabelElement]。

最佳答案

您遇到一些问题。首先,如Quantastical pointed out ,您尚未关闭 div#dropBox 标记。

当您这样做时,它会消失,因为它不再包含任何子项,并且您已经设置了 height: auto。让我们设置 height: 200px 以使其保持打开状态。

现在拖放操作应该可以工作,但您的提交按钮会调用 saveAndDisplay,而您尚未为我们定义该按钮。我怀疑在您的测试中,您无意中将 label 转换为字符串,这会导致 [object HTMLLabelElement]。您所需要做的就是将每个内容从 #dropBox 移动到新的 #demo 父级,即 simple :

function saveAndDisplay() {
var result = document.getElementById('demo');
var list = document.getElementById('dropBox');
while (list.children.length > 0) {
result.appendChild(list.children[0]);
}
}

这是一个working demo如果你想四处看看。

如果您不想实际移动元素,只需将它们显示在段落中,您可以循环它们并构建段落的 HTML:

function saveAndDisplay() {
var list = document.getElementById('dropBox').children;
var result = "Names are: <br />";
for (var i = 0; i < list.length; i++) {
result += list[i].innerText + "<br />";
}
document.getElementById('demo').innerHTML = result;
}

这是demo该版本的。

关于javascript - 保存并显示 Javascript 数组中删除的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33327100/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com