- 締切済み
関数から一気に抜ける
お世話になります。 不適切なデータを送らないためのスクリプトを書いています。 <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にあるのでしょうか? よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- 神崎 渉瑠(@taloo)
- ベストアンサー率44% (1016/2280)
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に続きます)
- Oh-Orange
- ベストアンサー率63% (854/1345)
★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 ); }
お礼
すみません。 1番の方のところでも書きましたが、 類似した処理をループでコンパクトに書きたいわけではないのです。 つたない説明で申し訳ありませんでした。
- hkd9001
- ベストアンサー率48% (99/204)
こんばんは。 …なるほど、 --------------------------------- 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 !
お礼
すみません。 関数から抜けることを主眼におきたかったので簡略化しましたが、 if (frm1.elements[i]~~~) { の ~~~ も結構パターンがあるのです。 それならそれで真偽値審査部分も配列にすればよいのですけど…。 ともあれ主眼は「1行でも短くならないか?」ということとは 微妙にずれたところにあります。 でもありがとうございました。
お礼
はい、そういう意味です。 JavaScriptでは不可能なんですね。 かなり探したけれど見つからないわけだ…。 ありがとうございました。