多个div,每个div里有两个input,实现div可以上下拖拽,两个div换位置,并且input的文字按照拖拽过后的顺序打印出来
时间: 2023-07-16 19:13:34 浏览: 202
这个问题需要使用HTML、CSS和JavaScript来实现。下面是一个简单的实现方式:
HTML部分:
```html
<div class="drag-container">
<div class="drag-item">
<input type="text" placeholder="input1">
<input type="text" placeholder="input2">
</div>
<div class="drag-item">
<input type="text" placeholder="input1">
<input type="text" placeholder="input2">
</div>
<div class="drag-item">
<input type="text" placeholder="input1">
<input type="text" placeholder="input2">
</div>
</div>
```
CSS部分:
```css
.drag-container {
display: flex;
}
.drag-item {
display: flex;
flex-direction: column;
margin-right: 10px;
padding: 10px;
border: 1px solid black;
}
```
JavaScript部分:
```javascript
// 获取拖拽容器
const dragContainer = document.querySelector('.drag-container');
// 获取所有拖拽项
const dragItems = document.querySelectorAll('.drag-item');
// 定义拖拽开始的位置和拖拽中的位置
let dragStartIndex;
let dragEndIndex;
// 给每个拖拽项添加拖拽事件
dragItems.forEach((item, index) => {
item.addEventListener('dragstart', () => {
dragStartIndex = index;
});
item.addEventListener('dragover', (event) => {
event.preventDefault();
});
item.addEventListener('drop', () => {
dragEndIndex = index;
// 交换拖拽项的位置
if (dragStartIndex !== dragEndIndex) {
const temp = dragContainer.children[dragStartIndex].cloneNode(true);
dragContainer.insertBefore(temp, dragContainer.children[dragEndIndex]);
dragContainer.insertBefore(dragContainer.children[dragEndIndex], dragContainer.children[dragStartIndex]);
}
// 打印拖拽项内input的文字顺序
const inputs = document.querySelectorAll('.drag-item input');
let text = '';
inputs.forEach(input => {
text += input.value;
});
console.log(text);
});
});
```
以上代码实现了一个可以拖拽的div容器,可以交换拖拽项的位置,并且可以按照拖拽后的顺序打印出input的文字。
阅读全文