当前位置:首页 > JavaScript

js点击实现元素互换

2026-04-04 20:16:45JavaScript

实现元素互换的 JavaScript 方法

方法一:通过交换 DOM 节点位置

使用 insertBeforeinsertAdjacentElement 方法直接交换两个元素在 DOM 中的位置:

function swapElements(element1, element2) {
  const parent1 = element1.parentNode;
  const parent2 = element2.parentNode;
  const next1 = element1.nextSibling;
  const next2 = element2.nextSibling;

  parent1.insertBefore(element2, next1);
  parent2.insertBefore(element1, next2);
}

方法二:通过临时克隆节点交换

创建一个临时克隆节点辅助交换:

js点击实现元素互换

function swapWithClone(element1, element2) {
  const temp = document.createElement('div');
  element1.parentNode.insertBefore(temp, element1);
  element2.parentNode.insertBefore(element1, element2);
  temp.parentNode.insertBefore(element2, temp);
  temp.remove();
}

方法三:交换 HTML 内容

如果只需要交换内容而非节点本身:

function swapContent(element1, element2) {
  const temp = element1.innerHTML;
  element1.innerHTML = element2.innerHTML;
  element2.innerHTML = temp;
}

方法四:CSS 视觉交换

js点击实现元素互换

通过修改样式实现视觉交换(实际 DOM 结构不变):

function swapVisual(element1, element2) {
  const rect1 = element1.getBoundingClientRect();
  const rect2 = element2.getBoundingClientRect();

  element1.style.position = 'absolute';
  element2.style.position = 'absolute';
  element1.style.left = `${rect2.left}px`;
  element1.style.top = `${rect2.top}px`;
  element2.style.left = `${rect1.left}px`;
  element2.style.top = `${rect1.top}px`;
}

点击事件绑定示例

为多个元素添加点击交换功能:

document.querySelectorAll('.swap-item').forEach(item => {
  item.addEventListener('click', function() {
    const target = document.querySelector(this.dataset.swapTarget);
    if (target) swapElements(this, target);
  });
});

HTML 结构示例:

<div class="swap-item" data-swap-target="#item2">Item 1</div>
<div id="item2" class="swap-item" data-swap-target="#item1">Item 2</div>

注意事项

  • 方法一和方法二会实际改变 DOM 结构,可能影响事件监听器
  • 方法四的绝对定位可能影响页面布局
  • 如果元素尺寸不同,交换后可能需要额外调整样式
  • 对于动态生成的元素,建议使用事件委托绑定点击事件

标签: 元素js
分享给朋友:

相关文章

js实现图片轮播

js实现图片轮播

实现基础图片轮播 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS设置样式和动画效果,JavaScript处理轮播逻辑。 <div cl…

原生js实现轮播图

原生js实现轮播图

基本结构搭建 HTML部分需要包含轮播图容器、图片列表及导航按钮。结构示例如下: <div class="slider-container"> <div class="slid…

js实现防洪

js实现防洪

防抖(Debounce)实现 防抖的核心思想是在事件触发后延迟执行回调函数,若在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口调整等场景。 function debounce(f…

js树实现

js树实现

树的基本概念 树是一种非线性的数据结构,由节点和边组成。每个节点包含一个值和指向子节点的引用。树的顶部节点称为根节点,没有子节点的节点称为叶节点。 树的实现方式 在JavaScript中,树可以通过…

js实现上传文件

js实现上传文件

文件上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现文件上传功能。 <input type="file"…

js实现 拖动

js实现 拖动

实现拖动的步骤 HTML 结构 创建一个可拖动的元素和一个放置区域: <div id="draggable" draggable="true">拖动我</div> <d…