電子書籍の厳選無料作品が豊富!

お世話になります。
不適切なデータを送らないためのスクリプトを書いています。

<form onsubmit="return func1(this);">
(省略)
</form>

func1 (frm1){
  if (frm1.elements[0]~~~) {
    alert(msg0);
    return false;
  }
(省略)
  if (frm1.elements[99]~~~) {
    alert(msg99);
    return false;
  }
  return true;
}

このように書く代わりに

func1 (frm1){
  if (frm1.elements[0]~~~) {
    exodus(msg0);
  }
(省略)
  if (frm1.elements[99]~~~) {
    exodus(msg99);
  }
  return true;
}
function exodus(msg) {
  alert(msg);
  xxxx false;
}

とかこんな風に書けたらいいなと思うのですが
この「xxxx」に相当するような機能はJavaScriptにあるのでしょうか?

よろしくお願いします。

A 回答 (3件)

function func1 (frm1){


  if (frm1.elements[0]~~~) {
    exodus(msg0);
  }
  return true;
}
function exodus(msg){
;
}
このときにexodus(msg0)を実行するだけでfunc1も終了する方法はあるか?
という意味に取れましたが、どうなんでしょうか。

JavaScriptではそう言う機能(Cのexit()に相当する機能)はありません。

面倒ですが、1つ1つreturn falseで関数を抜けさせる必要があります。
  if (frm1.elements[0]~~~) {
    exodus(msg0);
    return false;
  }
  (略)
  if (frm1.elements[99]~~~) {
    exodus(msg99);
    return false;
  }

ですが、他の言語同様にif(1から99){}をまとめて、forループなどでかけますので、(略、ANo.1やANo.2に続きます)
    • good
    • 0
この回答へのお礼

はい、そういう意味です。
JavaScriptでは不可能なんですね。
かなり探したけれど見つからないわけだ…。

ありがとうございました。

お礼日時:2007/03/15 19:08

★for 文を使ったら。


・『msg0』~『msg99』を『msg[100]』の配列に定義変更します。
・『for』文で 0 ~ 99 までをチェックして行えばいいと思います。
・以上。おわり。

function func1( frm1 ){
 for ( var i=0 ; i < 100 ; i++ ){
  if (frm1.elements[i]~~~){
    exodus( msg[i] );
    return( false );
  }
 }
 return( true );
}

function exodus( msg ){
 alert( msg );
}
    • good
    • 0
この回答へのお礼

すみません。
1番の方のところでも書きましたが、
類似した処理をループでコンパクトに書きたいわけではないのです。
つたない説明で申し訳ありませんでした。

お礼日時:2007/03/15 19:06

こんばんは。



…なるほど、
---------------------------------
if (frm1.elements[0]~~~) {
    alert(msg0);
    return false;
}
---------------------------------
の中の行が、1行でも短くならないか?
というご質問ですね。

それなら、
---------------------------------
for(i=0; i<100; i++) {
if (frm1.elements[i]~~~) {
    alert(msg[i]);
    return false;
}
}
---------------------------------
という格好にして、メッセージを
msg[n]
という配列のかたちで持たせれば、
行は ずっと少なくなります YO !
    • good
    • 0
この回答へのお礼

すみません。

関数から抜けることを主眼におきたかったので簡略化しましたが、
if (frm1.elements[i]~~~) {

~~~
も結構パターンがあるのです。
それならそれで真偽値審査部分も配列にすればよいのですけど…。

ともあれ主眼は「1行でも短くならないか?」ということとは
微妙にずれたところにあります。
でもありがとうございました。

お礼日時:2007/03/15 18:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!