当前位置:首页 > 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实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。 &…

js实现图片移动

js实现图片移动

使用CSS和JavaScript实现图片移动 方法一:使用CSS动画结合JavaScript控制 通过CSS定义动画关键帧,JavaScript动态添加或移除动画类。 /* CSS部分 */ .m…

js实现div隐藏

js实现div隐藏

使用CSS的display属性隐藏div 通过设置元素的display属性为none,可以完全隐藏div元素。这种方法不仅隐藏元素,还会从文档流中移除,不占据页面空间。 document.getEl…

js实现筛选

js实现筛选

JavaScript 实现数据筛选的方法 使用 Array.filter() 方法 Array.filter() 是 JavaScript 中最常用的筛选方法,它会创建一个新数组,包含通过回调函数测试…

js和jquery

js和jquery

JavaScript 与 jQuery 的关系与区别 JavaScript 是一种动态编程语言,主要用于网页开发,使网页具有交互性。它是浏览器的原生脚本语言,可以直接在浏览器中运行。 jQuery…

js 实现预加载

js 实现预加载

预加载的基本概念 预加载是一种优化技术,通过在页面加载初期提前请求资源,减少用户后续操作的等待时间。常见场景包括图片、音频、视频或关键脚本的提前加载。 使用<link rel="preload…