点击第二个div和第一个div交换位置
时间: 2024-05-15 21:15:15 浏览: 98
这是一个JavaScript的实现方法:
1. 首先获取到第一个和第二个div的引用,可以使用document.querySelector()方法来获取指定的元素。
2. 使用insertBefore()方法将第一个div插入到第二个div的前面。
代码示例:
```html
<div id="div1" onclick="swap()">第一个div</div>
<div id="div2" onclick="swap()">第二个div</div>
<script>
function swap() {
var div1 = document.querySelector("#div1");
var div2 = document.querySelector("#div2");
div2.parentNode.insertBefore(div1, div2.nextSibling);
}
</script>
```
注:以上代码仅供参考,具体实现可能需要根据实际情况进行调整。
相关问题
js 交换两个div的位置
可以通过 JavaScript 来交换两个 div 的位置,具体的实现方法如下:
HTML 代码:
```html
<div id="div1">这是第一个 div</div>
<div id="div2">这是第二个 div</div>
```
JavaScript 代码:
```javascript
// 获取两个 div 元素
var div1 = document.getElementById("div1");
var div2 = document.getElementById("div2");
// 获取它们的父元素
var parent = div1.parentNode;
// 获取 div1 在父元素中的位置
var index1 = Array.prototype.indexOf.call(parent.children, div1);
// 获取 div2 在父元素中的位置
var index2 = Array.prototype.indexOf.call(parent.children, div2);
// 交换两个 div 的位置
if (index1 < index2) {
parent.insertBefore(div2, div1);
} else {
parent.insertBefore(div1, div2);
}
```
上述代码中,首先通过 `document.getElementById` 方法获取了两个 div 元素,然后通过 `parentNode` 属性获取它们的父元素,再通过 `indexOf` 方法获取它们在父元素中的位置,最后通过 `insertBefore` 方法来交换它们的位置。
<vuedraggable class="images" v-model="ids" @end="updateValue" > <div class="item" v-for="(item, index) in list"> <a-icon class="action-item delete-icon" type="delete" @click.stop="deleteItem(item)"></a-icon> <img :src="item.thumb" class="thumb" /> <div class="type-c">{{item.type_text}}</div> <div class="status-c" v-if="item.status == 0">已下架</div> <div class="title" :title="item.title">{{item.title}}</div> </div> </vuedraggable> 第一次移动总会带第一个
根据你提供的代码,我看到你正在使用 `vuedraggable` 组件来进行拖拽排序。如果第一次移动总会带第一个,可能是由于你的列表数据 `list` 中的第一个元素,也就是 `v-for` 中的 `item`,在数据源中的位置是第一位,而 `vuedraggable` 默认会将第一个元素作为默认拖拽的元素。这会导致第一次移动时会带上第一个元素。
为了解决这个问题,你可以尝试将数据源 `list` 中的第一个元素放到其他位置,或者在拖拽之前先将第一个元素与其他元素进行交换位置,这样第一次移动时就不会带上第一个元素了。例如,你可以在组件中添加一个 `mounted` 钩子函数,将数据源中的第一个元素与第二个元素位置进行交换,代码如下:
```
mounted() {
// 将第一个元素与第二个元素位置进行交换
if (this.list.length > 1) {
let temp = this.list[0];
this.list[0] = this.list[1];
this.list[1] = temp;
}
},
```
这样,第一次移动时就不会带上第一个元素了。
阅读全文