• 締切済み

関数から一気に抜ける

お世話になります。 不適切なデータを送らないためのスクリプトを書いています。 <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にあるのでしょうか? よろしくお願いします。

みんなの回答

回答No.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に続きます)

D_mode
質問者

お礼

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

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.2

★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 ); }

D_mode
質問者

お礼

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

  • hkd9001
  • ベストアンサー率48% (99/204)
回答No.1

こんばんは。 …なるほど、 --------------------------------- 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 !

D_mode
質問者

お礼

すみません。 関数から抜けることを主眼におきたかったので簡略化しましたが、 if (frm1.elements[i]~~~) { の ~~~ も結構パターンがあるのです。 それならそれで真偽値審査部分も配列にすればよいのですけど…。 ともあれ主眼は「1行でも短くならないか?」ということとは 微妙にずれたところにあります。 でもありがとうございました。