Jquery 值不相关时更改单元格样式
事情是这样的,账单是从点阵打印机中打印出来的,纸张是连续的(就像你们大多数人在销售部门看到的那样)。有时为了完成销售,推销员会拿一张账单(不是空白的)手工制作。 现在的系统可以通过让人们手动设置值,然后继续增加值来处理这种跳跃 但是还有一个空白,我必须突出显示空白前的行(只有带id的单元格),以便更清楚地看到有人拿了一张账单,手工制作,还没有重新注册 是这样的: (id列的css类是clave,意思是key) 因此,id 002和005的行应显示字体重量:粗体css,以使丢失的票据更容易识别。 我遇到的另一个问题是,这个html结构不是一个表,它实际上是由层(div标记)组成的 我有很多代码,我不知道为什么它不工作。。。 你我可以看到它在这里运行:Jquery 值不相关时更改单元格样式,jquery,css,Jquery,Css,事情是这样的,账单是从点阵打印机中打印出来的,纸张是连续的(就像你们大多数人在销售部门看到的那样)。有时为了完成销售,推销员会拿一张账单(不是空白的)手工制作。 现在的系统可以通过让人们手动设置值,然后继续增加值来处理这种跳跃 但是还有一个空白,我必须突出显示空白前的行(只有带id的单元格),以便更清楚地看到有人拿了一张账单,手工制作,还没有重新注册 是这样的: (id列的css类是clave,意思是key) 因此,id 002和005的行应显示字体重量:粗体css,以使丢失的票据更容易识别。
使用jQuery选择器,然后遍历所有选定项,并使用.css方法更改css长时间查看您的解释后,我认为这就是您想要做的
$(document).ready(function() {
$(".clave").each(function(i, v) { // loop through each elem with class=clave
var $next = $.trim($(".clave").eq(i + 1).text()); // get next text
var $ele = $.trim($(v).text()); // get this text
if ((+$next) - (+$ele) > 1) { // subtract next from now - if greateer than 1
$(v).css('color', 'red').css('font-weight','bold'); // turn current text bold
};
});
});
编辑:
忘记使用$.trim()而不是.trim()来支持跨浏览器
解决问题的一种方法:
function ensureConsecutive(el) {
if (!el || !el.parentNode.nextElementSibling) {
return false;
}
else {
var curId = parseInt(el.textContent,10),
parent = el.parentNode,
nextRow = parent.nextElementSibling,
nextId = parseInt(nextRow
.getElementsByClassName('id')[0].textContent,10);
if (curId + 1 !== nextId) {
$(el).addClass('nonConsecutive');
}
}
}
$('td.id').each(
function(i,el){
ensureConsecutive(el);
});
尽管这不兼容跨浏览器,但由于
nextElementSibling
和textContent
的使用,这可能会成为跨浏览器,使用更jQuery的方法或通过替代的纯JavaScript方法(innerText
)实现,页面上有一个错误,表示未定义jquery。在继续之前,请确保此页面可以访问jquery,可以参考google副本。文件引用问题。。包括jQuery文件我纠正了引用程序的问题,但仍然不起作用…修剪!我从来没有想过在这里使用trim:OJust trimming the unsential whitespace:)我注意到里面有很多空白,出于某种原因,你能花点时间给我解释一下函数(I,v)。。。在每个函数中,你从哪里得到了两个变量。。第一个参数=集合中当前元素的索引。。所以你可以用i+1来得到下一个元素并进行比较。。v包含您的DOM元素,即td元素。。您可以再次将其转换为jQuery对象以使用jQuery函数。它就像一个for循环。。其中i是索引。。但是jQuery也将元素作为参数传入。。你可以在这里读到更多关于它的信息,thnx,我会使用一种简单的方法,但我无法着手去PHP。。。
function ensureConsecutive(el) {
if (!el || !el.parentNode.nextElementSibling) {
return false;
}
else {
var curId = parseInt(el.textContent,10),
parent = el.parentNode,
nextRow = parent.nextElementSibling,
nextId = parseInt(nextRow
.getElementsByClassName('id')[0].textContent,10);
if (curId + 1 !== nextId) {
$(el).addClass('nonConsecutive');
}
}
}
$('td.id').each(
function(i,el){
ensureConsecutive(el);
});