JavaScript小ネタ
2006/8/17 [20:50:07] (木) 

本好きSNSの入力時のISBNチェックのためのJavaScriptを、解説本片手に、でっちあげてみる。
とりあえず期待通りの動作はするみたいだけど、JavaScriptというのが今いち信用できないんだよなぁ。むかしむかし、先行するネットスケープを猛追するマイクロソフトが、これは業界標準でいきましょうね、という紳士協定を無視したんだかどうだか、ユーザー囲い込みのために勝手な独自拡張を盛り込みまくったのがJavaScriptだった…かな。
ブラウザ間のギャップをどうするのか、というところでイライラさせられてきたからねぇ。
最近話題のAjaxにしてももともとはマイクロソフトが盛り込んだ独自拡張の一環。JavaScriptでHTTP通信をさせよう、という独自拡張は確かに便利なのでこれはこれでいい、かもしれないけど、なんだか勝てば官軍っぽくて嫌ンだ。
それはともかく、以下のもので2006年今年いっぱいまでは使える。(2007年になったらまたチェックデジットの算出方法が違ってくるので作り直し)
こいつを実装するかどうか、悩みどころだ。JavaScriptじゃなきゃ飛びつくところなんだけどねぇ。
function check_isbn() {
var isbnLen = 10;
var errMSG = "ISBNをご確認ください";
var num = document.bookin.isbn.value.replace(/ /g, ’’);
num = num.replace(/-/g, ’’);
document.getElementById("dmsg").innerHTML = ’’;
if ( num.length != isbnLen ){
document.getElementById("dmsg").innerHTML = errMSG;
return false;
}
var n=0; var w=0; var chk=0;
for(i=0; i < (isbnLen - 1); i++){
n = eval(num.charAt(i));
w = n * ( isbnLen - i );
chk = chk + w;
}
var mod; var digt;
mod = Math.floor( chk % 11);
digt = 11 - mod;
if( digt == 11 ){
digt = ’0’;
}
if( digt == 10 ){
digt = ’X’;
}
var origDig = num.charAt(9);
if( digt != origDig ){
document.getElementById("dmsg").innerHTML = errMSG;
return false;
}
else{
return true;
}
}
| << | 2026/3 | >> | ||||
|---|---|---|---|---|---|---|
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 | ||||
【最近の10件】


