条件式で分岐の書き方がわかりません。
function CheckData(gas){
(("CO2" == gas) && (document.form1.elem2.name == gas) )? alert('P1') :
alert('P2');
}
のように、( )? の中の分岐条件を絞り込むことはできないのでしょうか?
なぜかうまくいきません。FAQとかを探してみたのですが、そんなやり方はど
こにも見当たりませんでした。これはまちがった記述の仕方なのでしょうか。
いつも初歩的な質問ばかりで申し訳ありません。
--
板橋国男
> function CheckData(gas){
> (("CO2" == gas) && (document.form1.elem2.name == gas) )? alert('P1') :
> alert('P2');
> }
> のように、( )? の中の分岐条件を絞り込むことはできないのでしょうか?
別にできますけど。構文や言語機能の理解があってないんじゃなくて、
フォーム要素のアクセス方法とかが違っているんじゃないの。そもそも
そぼくな疑問ですが
(1) なぜgasが"CO2"のとき限定なの? それだったらもう1方の値が"CO2"
かどうかいきなり調べた方が簡単でしょ?
(2) 本当にフォーム要素のnameを比較したいんですか。値じゃなくて。
nameならHTMLのソースに書かれてるから比較するまでもないんじゃ
ないの。
(3) フォーム要素の指定方法は略さずに
「document.forms.フォーム名.elements.要素名」とした方がよい。
私の好みですが。
(4) だいたい条件式なんて読みづらくてトラブルのもとなんだから、一
番シンプルなもの以外はif文を使った方がいい。
> いつも初歩的な質問ばかりで申し訳ありません。
(5) やりたいコードでつまずいた時はそれを簡略化して問題の箇所だけ
テストする、という能力を養った方がいいですよ。
まあがんばってください。 久野
質問の仕方がいけなかったと思います。
いま、(条件A)?X:Y での条件式を勉強しています。
この条件分岐では()内に&&や||などの演算子を入れる
ことはできますか?
自分なりに試してみましたがどうもうまく動かないようです。
可能なのでしたらサンプルなど教えてくださいませんでしょ
うか。チュートリアルのURLでも結構です。
いつも初歩的な質問ばかりで申し訳ありません。
--
板橋国男
> いま、(条件A)?X:Y での条件式を勉強しています。
> この条件分岐では()内に&&や||などの演算子を入れる
> ことはできますか?
> 自分なりに試してみましたがどうもうまく動かないようです。
「条件A」の部分をきちんと ( ) でくくってあれば、&& や || も使えるはずで
すよ。
・実際に書いてみたコード
・期待している結果
・実際に出てくる結果
をきちんと書いて投稿してみてください。
========================================================================
飯嶋 浩光 / でるもんた・いいじま http://www.ht.sakura.ne.jp/~delmonta/
IIJIMA Hiromitsu, aka Delmonta mailto:delm...@ht.sakura.ne.jp
───【今日のひとこと】───────────────────
There are more than one ways for doing the same thing.
──Larry Wall
───────────────────────────────
kunit...@h2.dion.ne.jpさん:
> この条件分岐では()内に&&や||などの演算子を入れる
> ことはできますか?
できます。
> 自分なりに試してみましたがどうもうまく動かないようです。
だから何をどう試したの。
<script type="text/javascript">
var x = 1, y = 1, z = 1;
(x == y && x == z) ? alert('Y') : alert('N');
</script>
これで「Y」が出ませんか。
出ないなら処理系が壊れている。 久野
In message news:bahAa.284$t6...@news1.dion.ne.jp
"ITAHASHI Kunio" <kunit...@h2.dion.ne.jp> wrote ...
> いま、(条件A)?X:Y での条件式を勉強しています。
> この条件分岐では()内に&&や||などの演算子を入れる
> ことはできますか?
> 自分なりに試してみましたがどうもうまく動かないようです。
既に久野さんが一度答えを書いていますが、条件Aに&&等が
使えないのではなく、個別の条件がおかしいと思われます。
function CheckData(gas){
(("CO2" == gas) && (document.form1.elem2.name == gas))
? alert('P1') : alert('P2');
}
ここで、document.from1.elem2.name の値は elem2 では
ないですか?
こういった場合、まず gas や document.form1.elem2.name を
alert()等で表示してみて、それでもわからない場合は、
たとえば ? : で書くとすると、以下のように個別に
チェックしてみると良いです。
("CO2" == gas) ? alert('P1') : alert('P2');
(document.form1.elem2.name == gas) ? alert('N1') : alert('N2');
また、条件式を一旦変数に代入して表示させてみるのも手です。
flag = (("CO2" == gas) && (document.form1.elem2.name == gas));
alert(flag);
おそらく、今テストしておられるソースでは false に
なると思われます。
# 今、もし gas に CO2 が入っているとして、elem2.name は
# elem2 とすると、true && false で false となっている
# と思われます。
nws-...@bp.iij4u.or.jpさん:
> 既に久野さんが一度答えを書いていますが、条件Aに&&等が使えない
> のではなく、個別の条件がおかしいと思われます。
初心者にあるよねえ、自分が書いた部分は正しい、よって言語の機能
の方が間違っている、っていうの :-)
私も初心者のころは「これはマシン(ハードウェア)が壊れている」と
かいって先生に笑われたもんです。でも永遠にそういう思考してると永
遠に初心者のままですよね~。
もっともコンパイラならバグは確かにあり得るけど 久野
いろいろありがとうございました。解決しました。
コードの例示がマズくて余計なご迷惑おかけしてしまいました。
以後気をつけたいと思います。言い訳になって恐縮なのですが、
具体的に書いた方がよいのでは、と思って、とりあえずアタマに
あった環境問題のQ&Aをコードにしたらと思い、想像で書いてし
まいました。でも、専門家の皆さんには例示は釈迦に説法でした。
書くならきちんと、typeはhiddenにしてnameはvalueとすべきだった
と思います。
いつもすいませんです。
#杉田さんにはJavaScriptのことだけでなく、他のことでもとても
教えられます。私も見習いたいと思います。懲りずにまたよろしく
お願い致します。
--
板橋 拝
飯嶋さん こんにちは
ご親切ありがとうございます。
--
板橋 拝