请教高手一个JS的小问题!!

dj0628 2005-03-05 08:43:29
下面的代码是我见过的最好的JS选色板的源代码,但是它没有“吸管”的功能,所以并不完美,请这里的高手帮一下忙,能不能改一下下面的代码,搞出一个实用的“吸管”来,谢谢:

<HTML>
<HEAD>
<TITLE>选色板</TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<STYLE TYPE="text/css">
td {font-size: 10.8pt}
body {font-size: 10.8pt}
BUTTON {width:5em}
</STYLE>

<SCRIPT LANGUAGE=JavaScript>
var SelRGB = '';
var DrRGB = '';
var SelGRAY = '120';

var hexch = new Array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F');

function ToHex(n)
{var h, l;

n = Math.round(n);
l = n % 16;
h = Math.floor((n / 16)) % 16;
return (hexch[h] + hexch[l]);
}

function DoColor(c, l)
{ var r, g, b;

r = '0x' + c.substring(1, 3);
g = '0x' + c.substring(3, 5);
b = '0x' + c.substring(5, 7);

if(l > 120)
{
l = l - 120;

r = (r * (120 - l) + 255 * l) / 120;
g = (g * (120 - l) + 255 * l) / 120;
b = (b * (120 - l) + 255 * l) / 120;
}else
{
r = (r * l) / 120;
g = (g * l) / 120;
b = (b * l) / 120;
}

return '#' + ToHex(r) + ToHex(g) + ToHex(b);
}

function EndColor()
{ var i;

if(DrRGB != SelRGB)
{
DrRGB = SelRGB;
for(i = 0; i <= 30; i ++)
GrayTable.rows(i).bgColor = DoColor(SelRGB, 240 - i * 8);
}

SelColor.value = DoColor(RGB.innerText, GRAY.innerText);
ShowColor.bgColor = SelColor.value;
}
</SCRIPT>

<SCRIPT LANGUAGE=JavaScript FOR=ColorTable EVENT=onclick>
SelRGB = event.srcElement.bgColor;
EndColor();
</SCRIPT>

<SCRIPT LANGUAGE=JavaScript FOR=ColorTable EVENT=onmouseover>
RGB.innerText = event.srcElement.bgColor;
EndColor();
</SCRIPT>

<SCRIPT LANGUAGE=JavaScript FOR=ColorTable EVENT=onmouseout>
RGB.innerText = SelRGB;
EndColor();
</SCRIPT>

<SCRIPT LANGUAGE=JavaScript FOR=GrayTable EVENT=onclick>
SelGRAY = event.srcElement.title;
EndColor();
</SCRIPT>

<SCRIPT LANGUAGE=JavaScript FOR=GrayTable EVENT=onmouseover>
GRAY.innerText = event.srcElement.title;
EndColor();
</SCRIPT>

<SCRIPT LANGUAGE=JavaScript FOR=GrayTable EVENT=onmouseout>
GRAY.innerText = SelGRAY;
EndColor();
</SCRIPT>

<SCRIPT LANGUAGE=JavaScript FOR=Ok EVENT=onclick>
window.returnValue = SelColor.value;
window.close();
</SCRIPT>

</HEAD>

<BODY bgcolor=menu>

<div align="center"><center><table border="0" cellspacing="10" cellpadding="0"><tr><td>
<TABLE ID=ColorTable BORDER=0 CELLSPACING=0 CELLPADDING=0 style='cursor:hand'>
<SCRIPT LANGUAGE=JavaScript>
function wc(r, g, b, n)
{
r = ((r * 16 + r) * 3 * (15 - n) + 0x80 * n) / 15;
g = ((g * 16 + g) * 3 * (15 - n) + 0x80 * n) / 15;
b = ((b * 16 + b) * 3 * (15 - n) + 0x80 * n) / 15;

document.write('<TD BGCOLOR=#' + ToHex(r) + ToHex(g) + ToHex(b) + ' height=8 width=8></TD>');
}

var cnum = new Array(1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0);

for(i = 0; i < 16; i ++)
{
document.write('<TR>');
for(j = 0; j < 30; j ++)
{
n1 = j % 5;
n2 = Math.floor(j / 5) * 3;
n3 = n2 + 3;

wc((cnum[n3] * n1 + cnum[n2] * (5 - n1)),
(cnum[n3 + 1] * n1 + cnum[n2 + 1] * (5 - n1)),
(cnum[n3 + 2] * n1 + cnum[n2 + 2] * (5 - n1)), i);
}

document.writeln('</TR>');
}
</SCRIPT>
</TABLE></td><td>
<TABLE ID=GrayTable BORDER=0 CELLSPACING=0 CELLPADDING=0 style='cursor:hand'>
<SCRIPT LANGUAGE=JavaScript>
for(i = 255; i >= 0; i -= 8.5)
document.write('<TR BGCOLOR=#' + ToHex(i) + ToHex(i) + ToHex(i) + '><TD TITLE=' + Math.floor(i * 16 / 17) + ' height=4 width=20></TD></TR>');
</SCRIPT>
</TABLE></td></tr></table></center></div>

<div align="center"><center><table border="0" cellspacing="10" cellpadding="0">
<tr><td rowspan="2" align="center">
选中色彩<table ID=ShowColor border="1" width="40" height="30" cellspacing="0" cellpadding="0">
<tr><td></td></tr></table></td>
<td rowspan="2">基色: <SPAN ID=RGB></SPAN><BR>
亮度: <SPAN ID=GRAY>120</SPAN><BR>
代码: <INPUT TYPE=TEXT SIZE=7 ID=SelColor></td>
<td><BUTTON ID=Ok TYPE=SUBMIT>确定</BUTTON></td></tr>
<tr><td><BUTTON ONCLICK="window.close();">取消</BUTTON></td></tr></table></center></div>

</BODY>
</HTML>
...全文
316 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
dj0628 2005-04-12
  • 打赏
  • 举报
回复
真的吗?那我倒要好好找找,看JS到底能不能做到!
杨米格 2005-04-12
  • 打赏
  • 举报
回复
朋友,不是想象力的问题,是js的确做不到.
dj0628 2005-04-12
  • 打赏
  • 举报
回复
又说做不到??有点想象力好吧?
matrixy 2005-04-12
  • 打赏
  • 举报
回复
其实这是做不到的。
想想用applet或activex等等吧。
dj0628 2005-04-12
  • 打赏
  • 举报
回复
好吧,看来只能我自己做了,做好了再贴出来!
faisun 2005-04-10
  • 打赏
  • 举报
回复
IE 窗口拾色,用 textRange
dj0628 2005-04-01
  • 打赏
  • 举报
回复
那就IE窗口内的拾色吧,各位有代码吗??
donghid 2005-03-31
  • 打赏
  • 举报
回复
要是实现在IE窗口内的拾色还可以,若要是面向屏幕任何一点,我可以很肯定的告诉你,js做不到!
dj0628 2005-03-31
  • 打赏
  • 举报
回复
没有高手发言了啊??
dj0628 2005-03-08
  • 打赏
  • 举报
回复
photoshop也没实现吸管??不要说photoshop了,就是QQ和frontpage都行!
在QQ打开的时候按下CTRL + ALT + A ,你会发现此时鼠标会拾取屏幕上任何一点的色彩值,我需要的就是这种效果!
不就是读取屏幕上各点的值吗?有那么难吗?真的不能用JS实现??请各位帮帮忙了!!
erplab 2005-03-08
  • 打赏
  • 举报
回复
就算是 photoshop也没实现吸管阿
wzhiyuan 2005-03-08
  • 打赏
  • 举报
回复
想实现全屏吸管,个个觉得已非脚本所能及,应该需要桌面程序才可以实现吧。
wjcking 2005-03-08
  • 打赏
  • 举报
回复
sdf
dj0628 2005-03-08
  • 打赏
  • 举报
回复
顶一下吧,顶完四十分就算了,实在没办法只能自己好好研究一下了,可是我没JS基础啊,要研究出来那不知道要等到什么时候了:(
wzhiyuan 2005-03-07
  • 打赏
  • 举报
回复
那我也顶一下:)
dj0628 2005-03-07
  • 打赏
  • 举报
回复
星期一,高手都回来了吧??帮帮忙吧??谢谢了:(
erplab 2005-03-07
  • 打赏
  • 举报
回复
哈哈哈 顶
dj0628 2005-03-07
  • 打赏
  • 举报
回复
不是那么难吧?已经加到40分了,还没人出手??

唉……

要是不会帮我顶一下吧,顶一次五分,我的分快用完了:(
smx717616 2005-03-05
  • 打赏
  • 举报
回复
这么长的代码,估计没有人愿意帮你。
dj0628 2005-03-05
  • 打赏
  • 举报
回复
我总共还有50分,你让我怎么样?
加载更多回复(6)

87,904

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧