// ==UserScript== // @name KJL后台-商品列表添加序号 // @namespace Violentmonkey Scripts // @match https://www.kujiale.com/pub/saas/admin/brandgoods/all* // @match https://www.kujiale.com/pub/saas/workbench/brandgoods/all* // @grant none // @version 1.0 // @author hejie13250 // @description 2024/8/20 17:19:06 // ==/UserScript== (function() { 'use strict'; // 初始化序号 var sequenceNumber = 1; // 重置序号 function resetSequenceNumber() { sequenceNumber = 1; } // 创建带有递增序号的span元素 function createSequenceSpan() { var span = document.createElement('span'); span.textContent = sequenceNumber++; // 设置序号并递增 span.setAttribute('class', 'spanNum'); return span; } // 添加序号到所有符合条件的td元素 function addSequenceNumbers() { resetSequenceNumber(); // 重置序号 var trElements = document.querySelectorAll('tbody tr.StyledBodyRowTr-kSBvgt'); trElements.forEach(function(tr) { var lastTd = tr.lastElementChild; if (lastTd) { // 检查是否已经添加了span if (!lastTd.querySelector('span')) { lastTd.appendChild(createSequenceSpan()); } } }); } // 改变当前tr内所有文本的颜色为红色 function changeTextColorToRed(tr) { Array.from(tr.children).forEach(function(td) { td.style.color = 'red'; }); } // 恢复当前tr内所有文本的颜色 function restoreTextColor(tr) { Array.from(tr.children).forEach(function(td) { td.style.color = ''; }); } // 为每个tr元素添加点击事件监听器 function addClickListeners() { var trElements = document.querySelectorAll('tbody tr.StyledBodyRowTr-kSBvgt'); trElements.forEach(function(tr) { tr.addEventListener('click', function(event) { // 清除之前可能存在的红色文本 var allTrElements = document.querySelectorAll('tbody tr.StyledBodyRowTr-kSBvgt'); allTrElements.forEach(function(tr) { restoreTextColor(tr); }); // 改变当前tr内所有文本的颜色为红色 changeTextColorToRed(tr); }); }); } // MutationObserver配置 var observer = new MutationObserver(function(mutationsList) { mutationsList.forEach(function(mutation) { if (mutation.type === 'childList') { addSequenceNumbers(); // 当DOM变化时,重新添加序号 addClickListeners(); // 重新添加点击事件监听器 } }); }); // 观察器选项(监控子节点列表变化和子树变化) var config = { childList: true, subtree: true }; // 开始监视body的变化 observer.observe(document.body, config); // 初始添加序号和事件监听器 addSequenceNumbers(); addClickListeners(); })();