KJL后台-商品列表添加序号
// ==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();
})();