当前位置:首页 > JavaScript

js实现点击实现合并

2026-04-07 03:53:42JavaScript

实现点击合并的JavaScript方法

使用事件委托和DOM操作可以实现点击合并功能。以下是一个常见的实现方式:

document.addEventListener('click', function(event) {
  const target = event.target;
  if (target.classList.contains('merge-button')) {
    const parentElement = target.closest('.merge-container');
    const elementsToMerge = parentElement.querySelectorAll('.merge-item');

    let mergedContent = '';
    elementsToMerge.forEach(element => {
      mergedContent += element.textContent + ' ';
      element.remove();
    });

    const mergedElement = document.createElement('div');
    mergedElement.className = 'merged-result';
    mergedElement.textContent = mergedContent.trim();
    parentElement.appendChild(mergedElement);
  }
});

表格行合并的实现

对于表格行的合并,可以使用以下方法:

function mergeTableRows(tableId, columnIndex) {
  const table = document.getElementById(tableId);
  let previousValue = null;
  let rowSpan = 1;

  for (let i = 1; i < table.rows.length; i++) {
    const currentValue = table.rows[i].cells[columnIndex].textContent;

    if (currentValue === previousValue) {
      table.rows[i].cells[columnIndex].style.display = 'none';
      rowSpan++;
      table.rows[i - rowSpan + 1].cells[columnIndex].rowSpan = rowSpan;
    } else {
      rowSpan = 1;
      previousValue = currentValue;
    }
  }
}

基于数据属性的合并方案

使用HTML5数据属性可以更灵活地控制合并:

<div class="merge-group" data-merge-key="group1">
  <div class="item" data-merge-content="content1">Item 1</div>
  <div class="item" data-merge-content="content2">Item 2</div>
  <button class="merge-trigger">Merge</button>
</div>
document.querySelectorAll('.merge-trigger').forEach(button => {
  button.addEventListener('click', () => {
    const group = button.closest('.merge-group');
    const key = group.dataset.mergeKey;
    const items = group.querySelectorAll('.item');

    const mergedData = Array.from(items).map(item => 
      item.dataset.mergeContent).join(', ');

    items.forEach(item => item.remove());

    const mergedElement = document.createElement('div');
    mergedElement.className = 'merged-item';
    mergedElement.textContent = mergedData;
    group.insertBefore(mergedElement, button);
  });
});

动画效果的合并实现

为合并过程添加视觉反馈:

js实现点击实现合并

function mergeWithAnimation(selector) {
  const elements = document.querySelectorAll(selector);
  const targetPosition = elements[0].getBoundingClientRect();

  elements.forEach((el, index) => {
    if (index > 0) {
      const originalPosition = el.getBoundingClientRect();
      const clone = el.cloneNode(true);

      clone.style.position = 'absolute';
      clone.style.left = `${originalPosition.left}px`;
      clone.style.top = `${originalPosition.top}px`;
      clone.style.transition = 'all 0.5s ease';
      document.body.appendChild(clone);

      setTimeout(() => {
        clone.style.left = `${targetPosition.left}px`;
        clone.style.top = `${targetPosition.top}px`;
        clone.style.opacity = '0';

        setTimeout(() => {
          clone.remove();
          el.remove();
          if (index === elements.length - 1) {
            elements[0].textContent = Array.from(elements)
              .map(e => e.textContent).join(' ');
          }
        }, 500);
      }, 50);
    }
  });
}

这些方法提供了不同场景下的点击合并实现,可以根据具体需求选择或组合使用。

标签: js
分享给朋友:

相关文章

js实现图片轮播

js实现图片轮播

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

js 实现链表

js 实现链表

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。与数组不同,链表在内存中是非连续存储的,插入和删除操作效率较高。 链表的实现 在 JavaScrip…

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的curso…

js实现视口

js实现视口

js实现视口检测的方法 使用JavaScript检测元素是否进入视口(viewport)可以通过Intersection Observer API或手动计算元素位置实现。以下是两种常见方法: Int…

js实现跑马灯

js实现跑马灯

实现跑马灯效果 使用HTML和JavaScript可以轻松实现跑马灯效果。以下是两种常见的实现方式: HTML结构 <div id="marquee"> <span>…

js计算器的实现

js计算器的实现

实现基础结构 HTML部分需要创建计算器的基本框架,包含显示区域和按钮。使用<div>容器包裹整个计算器,内部设置一个显示屏和多个按钮。 <div class="calculato…