基于jquery的合并table相同单元格的插件(精简版)_jquery
效果如下
原表格:
col0 | col1 | col2 | col3 |
SuZhou | 11111 | 22222 | SuZhouCity |
SuZhou | 33333 | 44444 | SuZhouCity |
SuZhou | 55555 | 66666 | SuZhouCity |
ShangHai | 77777 | 88888 | ShangHaiCity |
ShangHai | uuuuu | hhhhh | ShangHaiCity |
ShangHai | ggggg | ccccc | ShangHaiCity |
GuangZhou | ttttt | eeeee | GuangZhouCity |
GuangZhou | ppppp | qqqqq | GuangZhouCity |
处理之后的样子:
col0 | col1 | col2 | col3 |
SuZhou | 11111 | 22222 | SuZhouCity |
33333 | 44444 | ||
55555 | 66666 | ||
ShangHai | 77777 | 88888 | ShangHaiCity |
uuuuu | hhhhh | ||
ggggg | ccccc | ||
GuangZhou | ttttt | eeeee | GuangZhouCity |
ppppp | qqqqq |
效果出来, 看上去比较简单, 下面先看下页面
col0 | col1 | col2 | col3 |
SuZhou | 11111 | 22222 | SuZhouCity |
SuZhou | 33333 | 44444 | SuZhouCity |
SuZhou | 55555 | 66666 | SuZhouCity |
ShangHai | 77777 | 88888 | ShangHaiCity |
ShangHai | uuuuu | hhhhh | ShangHaiCity |
ShangHai | ggggg | ccccc | ShangHaiCity |
GuangZhou | ttttt | eeeee | GuangZhouCity |
GuangZhou | ppppp | qqqqq | GuangZhouCity |
核心代码:
// 这里写成了一个jquery插件的形式
$('#process').mergeCell({
// 目前只有cols这么一个配置项, 用数组表示列的索引,从0开始
// 然后根据指定列来处理(合并)相同内容单元格
cols: [0, 3]
});
下面看看这个小插件的完整代码:
;(function($) {
// 看过jquery源码就可以发现$.fn就是$.prototype, 只是为了兼容早期版本的插件
// 才保留了jQuery.prototype这个形式
$.fn.mergeCell = function(options) {
return this.each(function() {
var cols = options.cols;
for ( var i = cols.length - 1; cols[i] != undefined; i--) {
// fixbug console调试
// console.debug(cols[i]);
mergeCell($(this), cols[i]);
}
dispose($(this));
});
};
// 如果对javascript的closure和scope概念比较清楚, 这是个插件内部使用的private方法
// 具体可以参考本人前一篇随笔里介绍的那本书
function mergeCell($table, colIndex) {
$table.data('col-content', ''); // 存放单元格内容
$table.data('col-rowspan', 1); // 存放计算的rowspan值 默认为1
$table.data('col-td', $()); // 存放发现的第一个与前一行比较结果不同td(jQuery封装过的), 默认一个"空"的jquery对象
$table.data('trNum', $('tbody tr', $table).length); // 要处理表格的总行数, 用于最后一行做特殊处理时进行判断之用
// 我们对每一行数据进行"扫面"处理 关键是定位col-td, 和其对应的rowspan
$('tbody tr', $table).each(function(index) {
// td:eq中的colIndex即列索引
var $td = $('td:eq(' + colIndex + ')', this);
// 取出单元格的当前内容
var currentContent = $td.html();
// 第一次时走此分支
if ($table.data('col-content') == '') {
$table.data('col-content', currentContent);
$table.data('col-td', $td);
} else {
// 上一行与当前行内容相同
if ($table.data('col-content') == currentContent) {
// 上一行与当前行内容相同则col-rowspan累加, 保存新值
var rowspan = $table.data('col-rowspan') + 1;
$table.data('col-rowspan', rowspan);
// 值得注意的是 如果用了$td.remove()就会对其他列的处理造成影响
$td.hide();
// 最后一行的情况比较特殊一点
// 比如最后2行 td中的内容是一样的, 那么到最后一行就应该把此时的col-td里保存的td设置rowspan
if (++index == $table.data('trNum'))
$table.data('col-td').attr('rowspan', $table.data('col-rowspan'));
} else { // 上一行与当前行内容不同
// col-rowspan默认为1, 如果统计出的col-rowspan没有变化, 不处理
if ($table.data('col-rowspan') != 1) {
$table.data('col-td').attr('rowspan', $table.data('col-rowspan'));
}
// 保存第一次出现不同内容的td, 和其内容, 重置col-rowspan
$table.data('col-td', $td);
$table.data('col-content', $td.html());
$table.data('col-rowspan', 1);
}
}
});
}
// 同样是个private函数 清理内存之用
function dispose($table) {
$table.removeData();
}
})(jQuery);
主要的说明在注释里应该都有了, 代码的确比较简单, 像有些地方还值得改进
•处理的table内容是从tbody开始查找的, 如果没有tbody, 那应该给出个更通用化的方案
•for ( var i = cols.length - 1; cols[i] != undefined; i--)...如果表格数据量大, 处理的列也比较多, 这里不进行优化会有造成浏览器线程阻塞的风险, 可以考虑用setTimeout
•其他什么值得改进的, 我想应该会不少的

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Utilisez un outil de vérification des erreurs L'un des moyens les plus rapides de rechercher des erreurs avec votre feuille de calcul Excel consiste à utiliser un outil de vérification des erreurs. Si l'outil détecte des erreurs, vous pouvez les corriger et réessayer d'enregistrer le fichier. Cependant, l'outil peut ne pas trouver tous les types d'erreurs. Si l'outil de vérification des erreurs ne trouve aucune erreur ou si leur correction ne résout pas le problème, vous devez alors essayer l'un des autres correctifs ci-dessous. Pour utiliser l'outil de vérification des erreurs dans Excel : sélectionnez l'onglet Formules. Cliquez sur l'outil de vérification des erreurs. Lorsqu'une erreur est détectée, des informations sur la cause de l'erreur apparaîtront dans l'outil. Si ce n'est pas nécessaire, corrigez l'erreur ou supprimez la formule à l'origine du problème. Dans l'outil de vérification des erreurs, cliquez sur Suivant pour afficher l'erreur suivante et répétez le processus. Quand pas

Comment définir la zone d'impression de GoogleSheets dans l'aperçu avant impression Google Sheets vous permet d'imprimer des feuilles de calcul avec trois zones d'impression différentes. Vous pouvez choisir d'imprimer l'intégralité de la feuille de calcul, y compris chaque feuille de calcul individuelle que vous créez. Vous pouvez également choisir d'imprimer des feuilles de calcul individuelles. Enfin, vous ne pouvez imprimer qu'une partie des cellules que vous sélectionnez. Il s'agit de la plus petite zone d'impression que vous puissiez créer puisque vous pourriez théoriquement sélectionner des cellules individuelles pour l'impression. Le moyen le plus simple de le configurer consiste à utiliser le menu d'aperçu avant impression intégré de Google Sheets. Vous pouvez afficher ce contenu à l'aide de Google Sheets dans un navigateur Web sur votre PC, Mac ou Chromebook. Pour configurer Google

Il est généralement nécessaire d'insérer des documents PDF dans des feuilles de calcul Excel. Tout comme la liste de projets d'une entreprise, nous pouvons ajouter instantanément des données de texte et de caractères aux cellules Excel. Mais que se passe-t-il si vous souhaitez attacher la conception de la solution pour un projet spécifique à la ligne de données correspondante ? Eh bien, les gens s’arrêtent souvent et réfléchissent. Parfois, réfléchir ne fonctionne pas non plus parce que la solution n’est pas simple. Approfondissez cet article pour savoir comment insérer facilement plusieurs documents PDF dans une feuille de calcul Excel, ainsi que des lignes de données très spécifiques. Exemple de scénario Dans l'exemple présenté dans cet article, nous avons une colonne appelée ProductCategory qui répertorie un nom de projet dans chaque cellule. Une autre colonne ProductSpeci

Solution au problème qu'il y a trop de formats de cellules différents qui ne peuvent pas être copiés : 1. Ouvrez le document EXCEL, puis saisissez le contenu des différents formats dans plusieurs cellules 2. Recherchez le bouton « Format Painter » dans le coin supérieur gauche ; de la page Excel, puis cliquez sur l'option " " Format Painter " ; 3. Cliquez sur le bouton gauche de la souris pour définir le format afin qu'il soit cohérent.

Comment utiliser RANDBETWEEN pour générer des nombres aléatoires dans Excel Si vous souhaitez générer des nombres aléatoires dans une plage spécifique, la fonction RANDBETWEEN est un moyen rapide et simple de le faire. Cela vous permet de générer des entiers aléatoires entre deux valeurs de votre choix. Générez des nombres aléatoires dans Excel à l'aide de RANDBETWEEN : cliquez sur la cellule où vous souhaitez que le premier nombre aléatoire apparaisse. Tapez =RANDBETWEEN(1,500) en remplaçant "1" par le nombre aléatoire le plus bas que vous souhaitez générer et "500" par

Sur les valeurs numériques, sur les chaînes de texte, utiliser des virgules aux mauvais endroits peut vraiment devenir ennuyeux, même pour le plus grand connaisseur d'Excel. Vous savez peut-être même comment vous débarrasser des virgules, mais la méthode que vous connaissez peut vous prendre beaucoup de temps. Eh bien, quel que soit votre problème, s'il est lié à une virgule au mauvais endroit dans votre feuille de calcul Excel, nous pouvons vous dire une chose, tous vos problèmes seront résolus aujourd'hui, ici même ! Approfondissez cet article pour savoir comment supprimer facilement les virgules des nombres et des valeurs de texte en suivant les étapes les plus simples possibles. J'espère que vous apprécierez la lecture. Oh, et n’oubliez pas de nous dire quelle méthode vous attire le plus ! Section 1 : Comment supprimer les virgules des valeurs numériques Lorsqu'une valeur numérique contient une virgule, il existe deux situations possibles :

Comment rechercher des cellules fusionnées dans Excel sous Windows Avant de pouvoir supprimer des cellules fusionnées de vos données, vous devez toutes les trouver. Il est facile de le faire à l’aide de l’outil Rechercher et remplacer d’Excel. Rechercher des cellules fusionnées dans Excel : mettez en surbrillance les cellules dans lesquelles vous souhaitez rechercher des cellules fusionnées. Pour sélectionner toutes les cellules, cliquez dans un espace vide dans le coin supérieur gauche de la feuille de calcul ou appuyez sur Ctrl+A. Cliquez sur l'onglet Accueil. Cliquez sur l'icône Rechercher et sélectionner. Sélectionnez Rechercher. Cliquez sur le bouton Options. À la fin des paramètres FindWhat, cliquez sur Format. Sous l'onglet Alignement, cliquez sur Fusionner les cellules. Il doit contenir une coche plutôt qu'une ligne. Cliquez sur OK pour confirmer le format

Est-il frustrant de supprimer automatiquement les zéros non significatifs des classeurs Excel ? Lorsque vous entrez un nombre dans une cellule, Excel supprime souvent les zéros non significatifs devant le nombre. Par défaut, il traite les entrées de cellule dépourvues de formatage explicite comme des valeurs numériques. Les zéros non significatifs sont généralement considérés comme non pertinents dans les formats numériques et sont donc omis. De plus, les zéros non significatifs peuvent poser des problèmes dans certaines opérations numériques. Par conséquent, les zéros sont automatiquement supprimés. Cet article vous apprendra comment conserver les zéros non significatifs dans Excel pour garantir que les données numériques saisies telles que les numéros de compte, les codes postaux, les numéros de téléphone, etc. sont dans le format correct. Dans Excel, comment autoriser les nombres à avoir des zéros devant eux ? Vous pouvez conserver les zéros non significatifs des nombres dans un classeur Excel. Vous avez le choix entre plusieurs méthodes. Vous pouvez définir la cellule en
