对于一个JS高手来说,一分钟就把这些代码看明白了啊,所以长点也无所谓啊!
再说了,我只是想添加一个吸管工具啊,用不着再写出这么长的代码啊!这个吸管的构建对于基本不会JS的我来说的确是太难了,对JS高手应该不难吧?就算也很难,也应该去尝试一下啊,我从来没有见过类似的JS吸管,难道就没有具有挑战性的高手吗?呵呵,说有挑战性可能是我无知了,这应该很简单,对吧?高手帮帮忙啊!!帮不了,就顶顶也行啊!谢谢各位!!

解决方案 »

  1.   

    哈哈,我不是高手,我帮你解决了
    <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>
      

  2.   

    按你要做成吸管的意思,应该是点击时再会生以EndColor();所以onmouseover,和onmouseout,的EndColor();我注释了就可以了所以动动脑子,还是好的
      

  3.   

    楼上的这位朋友啊,我试了你的代码好象没有什么不同啊!?我要加个吸管的意思是从PS中想到的,因为我需要获取别的色彩,而不仅仅是选取某种颜色。点击一个链接,然后跳出这个选色板(是以一个刚好包括它的小尺寸显示的),目前这个选色板只能在它提供的颜色范围内才能选取,我是想能够获取整个屏幕上所有的颜色而不仅仅是选取它给出色板的颜色……不知道我这么说大家听明白了没有?如果不明白,去PS或FP中看看它们的吸管就知道我要达到的目的了!!谢谢!
      

  4.   

    就算是 photoshop也没实现吸管阿
      

  5.   

    photoshop也没实现吸管??不要说photoshop了,就是QQ和frontpage都行!
    在QQ打开的时候按下CTRL + ALT + A ,你会发现此时鼠标会拾取屏幕上任何一点的色彩值,我需要的就是这种效果!
    不就是读取屏幕上各点的值吗?有那么难吗?真的不能用JS实现??请各位帮帮忙了!!
      

  6.   

    要是实现在IE窗口内的拾色还可以,若要是面向屏幕任何一点,我可以很肯定的告诉你,js做不到!
      

  7.   

    IE 窗口拾色,用 textRange
      

  8.   

    其实这是做不到的。
    想想用applet或activex等等吧。