2011年11月20日 星期日

身分證號碼檢查程式-JavaScript

預備知識:
陣列物件的建立
使用陣列物件之前,必須先行建立,而建立陣列物件的敘述有以下兩種格式:
X=new Array(N);
X=new Array(陣列元素0 , 陣列元素1 , ........陣列元素N-1);

兩種格式都會建立出 N 個元素的陣列物件,差別只在於第二種格式會為每一個值陣列元素設定好初值。

ex:
X=new Array(10); //建立10個元素的陣列物件,但不設定初值
Y=new Array(95,10,340); //建立3個元素的陣列物件,而這3個元素的初值分別是Y[0]=95,Y[1]=10,Y[2]=340

String物件
charAt( )方法:依照Index N 去找出字串中第 N 個字元

ex:
x="ABCDE"
x.charAt(0) A
x.charAt(1) B
x.charAt(2) C
x.charAt(3) D
x.charAt(4) E

indexOf( ) 與 lastIndexOf( ) 方法
想要搜尋一個較長的字串中,是否含有另一個字串,需使用indexOf( ) 或lastIndexOf( )方法,其中indexOf( )從前面向後搜尋,lastIndexOf( )則從後面向前面搜尋

ex:
x="I saw a saw saw a saw."
  // 0 2         90           890

則:
x.indexOf("saw")=2
x.lastIndexOf("saw")=18

如果搜尋之後沒有找到,則傳回-1

例如:
x.indexOf("see")=-1


length屬性
字串物件只有一個屬性 length,用以讀取字串的長度,

例如:
  "abc".length 等於3
  "".length 等於0

  x="1234567890"
  x.length 等於10

parseInt、parseFloat:用來把數值型的字串轉成數值

ex:
     parseInt("100")          等於    100
     parseFloat("99.5")      等於   99.5

在此特此聲明,parseInt、parseFloat不是附屬於字串物件的方法,所以呼叫的語法不是『字串.parseInt』或是『字串.parseFloat』,而是『parseInt(字串)』或是『parseFloat(字串)』

isNaN(x):如果 x  不是一個數字的話,傳回 true

規則
身分證字號一共10個字元,我們把他表示成:
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9

其中第一個字元必須是英文字母,而此一英文字母在檢查的規則中必須先轉換成數字,轉換的規則如下表:
A10 B11 C12 D13 E14 F15 G16 H17 J18 K19 L20 M21 N22
P23 Q24 R25 S26 T27 U28 V29 W30 X31 Y32 Z33 I34 O35

檢查的公式:
(A0的十位數 + A0的個位數*9 + A1*8 + A2*7 + A3*6 + A4*5 + A5*4 + A6*3 + A7*2 + A8 + A9 ) ÷10
如果整除,就是正確的身分證字號

架構
  <html>
  <title>身分證檢查</title>
  <script language="javascript">
  function CheckId(id){
    }
  </script>
  <form Name=form1>
  輸入身分證號碼:<input type="Text" name=PID><p>
  <input type=button value="送出" Onclick="CheckId(PID.value);">
  </form>
  </html>

沒有留言:

張貼留言