Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 基于单元格中超过另一日期的日期设置行的背景色_Jquery - Fatal编程技术网

Jquery 基于单元格中超过另一日期的日期设置行的背景色

Jquery 基于单元格中超过另一日期的日期设置行的背景色,jquery,Jquery,给定一个列为“DueDate”的表,jQuery的大致代码是什么,例如,根据每个DueDate单元格相对于另一个日期的值设置表行的背景色 我最感兴趣的是关于如何正确处理日期的陷阱……如何在javascript中显式使用字符串值作为日期,我是否必须对日期格式等非常严格。鉴于您能够使用date.parse()将日期转换为秒(或毫秒),然后,您可以使用如下内容: var min = false, max = false; // Find the minimum and maximum date $(

给定一个列为“DueDate”的表,jQuery的大致代码是什么,例如,根据每个DueDate单元格相对于另一个日期的值设置表行的背景色


我最感兴趣的是关于如何正确处理日期的陷阱……如何在javascript中显式使用字符串值作为日期,我是否必须对日期格式等非常严格。

鉴于您能够使用
date.parse()
将日期转换为秒(或毫秒),然后,您可以使用如下内容:

var min = false, max = false;

// Find the minimum and maximum date
$('tr').each(function() {
    // Acquire a numeric presentation somehow
    var milliseconds = parseInt(Date.parse($(this).find('td.date').html()));

    // Determine the min and max
    min = milliseconds < min || !min ? milliseconds : min;
    max = milliseconds > max || !max ? milliseconds : max;
});


$('tr').each(function() {
    // Get the numeric presentation for current row
    var milliseconds = parseInt(Date.parse($(this).find('td.date').html()));

    // The relative position of the date, 0 = min date, 1 = max date
    var position = (milliseconds - min) / (max - min);

    // Generate color components
    var red   = Math.round(((0 - position) + 1) * 255).toString(16);
    var green = Math.round(position * 255).toString(16);

    // Build hex color string
    red     = red.length == 1   ? '0' + red   : red;
    green   = green.length == 1 ? '0' + green : green;
    var hex = '#'+red+green+'00';

    // Apply the color
    $(this).find('td').css('background-color', hex);
});
var min=false,max=false;
//查找最小和最大日期
$('tr')。每个(函数(){
//以某种方式获得数字表示
var millizes=parseInt(Date.parse($(this.find('td.Date').html());
//确定最小值和最大值
分钟=毫秒<分钟| |!分钟?毫秒:分钟;
最大=毫秒>最大| |!最大?毫秒:最大;
});
$('tr')。每个(函数(){
//获取当前行的数字表示形式
var millizes=parseInt(Date.parse($(this.find('td.Date').html());
//日期的相对位置,0=最小日期,1=最大日期
变量位置=(毫秒-分钟)/(最大-分钟);
//生成颜色组件
var red=数学舍入((0-位置)+1)*255)。toString(16);
绿色变量=数学圆(位置*255).toString(16);
//构建十六进制颜色字符串
红色=红色。长度==1?'0'+红色:红色;
绿色=绿色。长度==1?'0'+绿色:绿色;
变量十六进制='#'+红色+绿色+00';
//上色
$(this.find('td').css('background-color',hex);
});
如果代码中不清楚,此代码段将首先查找最小日期和最大日期,然后为行着色,使最小日期为红色,最大日期为绿色


希望这能有所帮助。

你的日期是什么格式的?是的,这是问题的一部分……我必须使用明确的日期格式吗?可以解析明确的日期(即:2009年12月12日),或者,是否有一个参数可以明确地告诉它我正在使用的格式?只是为了澄清这段代码在做什么。它查看所有日期并找到最大和最小日期。然后,它查看每一行,并用红色和绿色的混合物对其着色,这样最大值是绿色,最小值是红色,其他所有内容都是这两种颜色的混合物。值得注意的是,人眼在区分颜色变化和赋予它们意义方面非常差。。。它在区分亮度和饱和度的变化方面要好得多。不过,代码片段背后的原理应该可以帮助您找到解决方案。@Dancrumb,我自己也注意到着色方案不是很好,但它提供了一些起点。这对于红绿色盲的人来说尤其难以区分:)var millizes=parseInt($(this.find('td.date').html());在我看来,至少在某些情况下,它似乎不会正确处理日期……它必须假设默认的日期格式?使用Date.Parse()不是更有用吗?@tbone,你说得对,那只是一个占位符。为了清晰起见,我添加了Date.parse()部分。谢谢Tatu。你熟悉date.js吗?它似乎解决了我的许多问题,还有更多的问题(Date.parse('today'),等等),但可下载的代码似乎在网站上的代码示例中演示的代码后面。