应届生求职招聘论坛

标题: 发个淘宝前端的笔试题做个纪念 [打印本页]

作者: linux8.0    时间: 2009-10-22 20:34
标题: 发个淘宝前端的笔试题做个纪念
川大考点前端鄙视题最后一题
题目大致意思就是转换RGB的值

例如: #1234ff 输出 rgb(18,52,255)
          #123 输出 #123
          #12345g 输出 #12345g

  1. <html>
  2. <head>
  3. <title>taobao.com</title>
  4. <script language="javascript" type="text/javascript">
  5. function changeRGB()
  6. {
  7. rgb=document.getElementById("myrgb").value;
  8. reg=/^(#)+([a-fA-F0-9]{6})$/;
  9. r=new Array(3);
  10. if ( reg.test(rgb) )
  11.     {
  12. for (i=0; i<5; i=i+2)
  13. {
  14. r[i/2]=parseInt('0x'+rgb.substring(i+1,i+3));
  15. }
  16. rgb='rgb('+r.join()+')';
  17.     }
  18. document.getElementById("numrgb").innerHTML=rgb;
  19. }
  20. </script>
  21. </head>
  22. <input type="text" id="myrgb" onblur="changeRGB()">
  23. <div id="numrgb"></div>
  24. </html>
复制代码

作者: 笨活儿    时间: 2009-10-23 09:01
1# linux8.0

这个题当时我没做出来,不过我可以明确告诉你你的做法不是最佳答案。可能得个7分的样子。
作者: allen27    时间: 2009-10-25 00:01
谢谢LZ分享!
~!!
作者: yleo77    时间: 2009-10-28 22:14
本帖最后由 yleo77 于 2009-10-28 22:15 编辑

function ChangeColor(inputID, outputID){
    this_inputID = inputID;
    this_outputID = outputID;
    var obj = this.$(inputID);
    var that = this;
    obj_addEventListener('blur', function(){
        that_rgbChange();      
    }, false);
}

ChangeColor_prototype.$ = function(id){
    return document_getElementById(id);
}

ChangeColor_prototype_rgbChange = function(){
   
    var value = this.$(this_inputID).value;
    var reg = new RegExp(/^#[a-f0-9]{6}$/);
    if(!reg_test(value)){
   
        alert('颜色格式不正确');
        return false;
    }

    var myArray = [];
    for(var i = 1; i < 7; i=i+2){
        var tmpStr = value_charAt(i) + value_charAt(i+1);
        var num = parseInt('0x'+tmpStr);
        myArray_push(num);
    }
   
    var result = 'rgb('+myArray_join(',')+')';
    alert(result);
    this.$(this_outputID).innerHTML = result;

}
var rgbexam = new ChangeColor('myrgb', 'numrgb');
作者: myl7106    时间: 2009-10-28 22:28
不懂啊。。。。。。。。外行。
作者: 笨活儿    时间: 2009-10-28 22:59
最关键的考点是parseInt可以传递一个进制参数(parseInt('fe',16)),以及判断HTML色标值时的正则表达式,还有代码的可读性等问题。

4楼你完全不必写那么复杂的……  函数的功能越独立越好维护,直接写一个changeRGB,然后return处理后的字串要死啊…… 题目又没有要求你弄一个完整的HTML演示。
作者: charleswjwen    时间: 2009-11-6 21:05
dddddddddddddddddddddddddddd
作者: czonechan    时间: 2010-11-15 00:19
本帖最后由 czonechan 于 2010-11-15 22:36 编辑
  1. function RGB(rgb)
  2. {
  3.         reg=/^#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})$/;
  4.         if ( reg.test(rgb) )
  5.                 rgb='rgb('+parseInt(RegExp.$1,16)+","+parseInt(RegExp.$2,16)+","+parseInt(RegExp.$3,16)+')';
  6.         return rgb;
  7. }
复制代码

作者: liley007    时间: 2010-11-18 19:58
不懂前端
作者: yuchizhan    时间: 2011-3-11 13:37
ddddddddd
作者: lasiaz    时间: 2011-3-21 12:34
8楼好牛~
作者: zxhfighter    时间: 2011-9-29 22:02
8楼的应该是最佳的解决方案了,不错!




欢迎光临 应届生求职招聘论坛 (https://bbs.yingjiesheng.com/) Powered by Discuz! X3.2