注册 登录
编程论坛 JavaScript论坛

哪位大虾帮小弟看看这段代码呀。

Lucifer_0 发布于 2010-04-14 08:27, 876 次点击
<html>
<head>
    <title>Needless</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <link type="text/css" rel="stylesheet" href="./style.css">
</head>
<body alink="gold" background="./dot.gif" bgcolor="#000000" link="gold" text="#008000" vlink="#00c000">
<center>
<table border="0">
</table>
<table width="668" border="0" cellpadding="3" cellspacing="3" class="main">
  <tr>
 
  </tr>
<tr><td>
<center><h1>Needless</h1></center>
<br>
<div style="align:left;margin-left:20px;font-size: 15px;font-family:'Courier New'">
<br>
<font color='red'>Key Words:</font>Nothing<br>
<br><br>
<div style="margin-left:50px;color: #00ff00">

<br>
    <form name="doit" action="javascript:b()">
    <p align="center">
       <input type="text" name="number" maxlength="20" size="20">&nbsp;
        <input type="submit" value="OK">
        <br>
    </form>
    <font >请输入一个六位数的数字.<br><br>记住,你要的是"Key"而非其它!</font>
</center>

<script language="javascript">
var chr = "278330|278369|278317|278386|278313|278382|278367|278313|278375|278382|278365|278381|278369|278317|278340|278366|278386|278323|278297|278348|278365|278349|278308|278322|278300|278321|278314|278339|278364|278298|278329|278316|278317|";
var str = "";

function a( arg )
{
    var i,k;
    i = "";
    for( k = 0; k < chr.length; k ++ )
    {
        if( chr.charAt(k) == '|' )
        {
            i -= arg;
            str += String.fromCharCode(i);
            i = "";
        }
        else
        {
            i += chr.charAt(k);
        }
    }
}
function b()
{
    str = "";
    a( doit.number.value );
    alert( str );
}

</script>
</div>
</table><br>
<br><br>
</table>
  <br>
  <br>
</center>
</body>
</html>

本人纯色小白,望大虾帮我看看中间那么长一段数字代码 是 怎么翻译的 。
多谢啊!
8 回复
#2
frankqnj2010-04-15 02:16
很优雅的代码 不知道你哪里不明白
代码的逻辑就是
用 | 分割的每组数字 减去 你输入的六位数字 然后得到一个数 用这个数  通过String.formCharCode(数) 获取到对应其字符码的 字符.
然后把每个字符相加 获取一个长的字符串输出.

我觉得作者可能是 C++程序员出身 其实个功能可以吧代码写的很短 而且这段代码是 只能在ie下跑的. 倒不是算法本身 主要问题在于 取element元素的方法时不对的.
修改后的代码

    var chr = [278330, 278369, 278317, 278386, 278313, 278382, 278367, 278313, 278375, 278382, 278365, 278381, 278369, 278317, 278340, 278366, 278386, 278323, 278297, 278348, 278365, 278349, 278308, 278322, 278300, 278321, 278314, 278339, 278364, 278298, 278329, 278316, 278317];
    function b() {
        var v = document.forms[0].getElementsByTagName('input')[0].value;
        alert(new Array(chr.length + 1).join().replace(/,/g, function(m, n) { return String.fromCharCode(chr[n]-v); }));
    }
#3
frankqnj2010-04-15 11:19
或者 在不改变原数据的前提下  完全依靠正则表达式 来做 代码如下

    var chr = "278330|278369|278317|278386|278313|278382|278367|278313|278375|278382|278365|278381|278369|278317|278340|278366|278386|278323|278297|278348|278365|278349|278308|278322|278300|278321|278314|278339|278364|278298|278329|278316|278317|";
    function b() {
        var v = document.forms[0].getElementsByTagName('input')[0].value;
        alert(chr.replace(/([\d]{6})\|/g, function(m, n) { return String.fromCharCode(n - v); }));
    }
#4
ghost20102010-04-16 17:23
/g指什么呀,忘了。
#5
gabrk19852010-04-16 17:43
<i>ww</i>
#6
gabrk19852010-04-16 17:57
wwwwwwwwwwwwwwwwwwwww
#7
aspic2010-04-17 01:21
LS疯子 鉴定完毕
#8
foktime2010-04-17 13:09
/g:全局
aspic最近很忙啊 不怎么来 找工作么在
#9
aspic2010-04-17 19:52
是在找工作啊 失业半个月了……
1