• ベストアンサー

JavaScriptの条件文の応用

JavaScriptの条件文の応用について、アドバイスをお願いします。 if文は、ある条件を満たす時だけ命令を実行します。 if~else文は、ある条件を満たす時だけ命令を実行し、それ以外の場合はelse以下の命令を実行します。 if~else if~else文は、if~else文のある条件を複数用意したものです。 switch文は、if~else文を更に複数用意したものです。 それでは、ある条件"だけ"を満たす時だけ命令を実行させたい場合、どのように条件文を書けばいいのでしょうか。 具体的には、スレッド型掲示板で、「返信なし親記事だけ:空白」の時だけ投稿日時を表示するようにさせ、「返信あり親記事:oya」の時には投稿日時を表示させないようにしたいのです。 そして、返信がある場合には、投稿日時の欄に「最後のレス:end」を表示させるようにしたいのです。 掲示板は、http://bbs.sekkaku.net/bbs/23.htmlです。 20時間ぐらいあれこれやっているのですが、妙案が浮かびません。例えば、以下のような書き方もしています。 この書き方の場合、投稿日時は返信ありの場合も親記事の投稿日時が表示され、返信の投稿日時は、別の欄(返信数)に表示されてしまいます。 しかし、少し書き方を変えると、親記事の投稿日時が一切表示されず、返信の投稿日時は、別の欄(返信数)に表示されたままです。 【BASE】の関連部分 <SCRIPT type="text/javascript"> <!-- var mode = "$mode"; if (mode != " "){ document.write('$date_year/$date_mon/$date_day($date_week2) $date_hour:$date_min'); } // --> </SCRIPT> 【RES】の関連部分 <SCRIPT type="text/javascript"> <!-- mode = "$mode"; if (mode != "end"){ document.write('$date_year/$date_mon/$date_day($date_week2) $date_hour:$date_min'); } // --> </SCRIPT>

質問者が選んだベストアンサー

  • ベストアンサー
  • Y_eRu
  • ベストアンサー率32% (33/101)
回答No.3

こんにちわ 度々失礼します(o^-^o) 「返信記事の無い親記事のみの場合にのみ表示するようにする」場合の条件文 がわからないということですが 「それが親記事かどうか?」 「返信があるかどうか?」 のチェックはOKなのでしょうか? これらがOKならあとはif文で if( 親記事である && 返信無し ){  <・・処理・・>(日時の欄=投稿日時?) } こんな感じでいいような気がするのですが・・。 出来ませんか?(汗) またまた見当違いでしたらすみません(>_<)

arrowseptember
質問者

お礼

2度に及ぶ回答を頂き、ありがとうございました。 やはり、JavaScriptの知識だけでなく、実際にここの掲示板を使っていないと解決は難しいようです。 またの機会がございましたら、その際にはよろしくお願い致します。

arrowseptember
質問者

補足

度々の回答、ありがとうございます。 既に30時間ぐらい、あれこれとやっていますが、うまくいきません。 「それが親記事かどうか?」、「返信があるかどうか?」 のチェックは、以下の変数で行います。 記事の種類の変数($res)は、返信なし親記事:空白、返信あり親記事:oya、レス記事:res、最後のレス:end、となっています。 実際にここの掲示板のサンプル23を借りて、カスタマイズを試みないと、回答するのは難しいのかもしれません。 問題が解決するか否かに関わらず、しばらくしたらポイントの発行と締め切りを行います。もう少しお待ちください。

その他の回答 (2)

  • Y_eRu
  • ベストアンサー率32% (33/101)
回答No.2

こんにちわ(o^-^o) 私も 「返信なし親記事だけ:空白」 とかの部分がよくわからないのですが 日時の欄に、条件によって 「投稿日時」or「レス」 の表示を変えたいということですよね? つまり if(「返信なし親記事だけ:空白」の場合){  日時の欄=投稿日時; }else if(「返信あり親記事:oya」の場合){  日時の欄=「最後のレス:end」; } ってことでは・・? そんな簡単なことじゃないって?(汗) 失礼しましたC= C= \(;・_・)/

arrowseptember
質問者

お礼

依然として解決できないままなのですが、これ以上は新たな回答が付きそうにありません。 遅くなりましたが、回答を締め切らせて頂きます。

arrowseptember
質問者

補足

さっそくの回答、ありがとうございます。 最初に回答頂いた方への補足の続きです。 サポートからの返事のうち、2番目にやることのやり方が分からないわけです。 「返信記事の無い親記事のみの場合にのみ表示するようにする」場合、条件文でどのように書けばいいのかが思いつきません。 if~else文を使うと、最初のifの段階で命令が実行されてしまいます。 複数の条件を付けるやり方では、うまくいかないようでした。 レンタル掲示板を無料で借りている場合、カスタマイズは1ヵ月30回までという利用制限があり、何度も試せないのがつらいところです。 私のJavaScriptに対する理解不足によりみなさんにご迷惑をおかけしまして、申し訳ありません。 なお、プログラム自体は、私のひとつ前の質問にあります。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=702504

  • the845t
  • ベストアンサー率33% (246/743)
回答No.1

要約がつかめません。 もう少し簡単な例をあげると分かりやすいと思いますが・・・。 例えば、 if(){ if(){ } } のように、if文の中にif文とか、 if(hoge&&foo){ } のように、複数の条件をつけるやり方で、いかがですか?

arrowseptember
質問者

お礼

結局は解決できずじまいなのですが、このまま放置しておいても新たな回答が付きそうにありません。 遅くなりましたが、回答を締め切らせて頂きます。 アドバイス、ありがとうございました。 またの機会がございましたら、よろしくお願い致します。

arrowseptember
質問者

補足

さっそくの回答、ありがとうございます。 レンタル掲示板は、以下のような構造になっています。 BASE1(一覧表示の親記事) RES1(一覧表示のレス記事:レス無しの場合は空白OK) BASE3(一覧表示の親記事) [以下2つは、レス書き込みフォームなど2階層目の表示] BASE2(関連記事のみ表示の親記事) RES2(関連記事のみ表示のレス記事) ログ表示開始前のHTML ログ表示開始後のHTML そして、記事の種類の変数は、返信なし親記事:空白、返信あり親記事:oya、レス記事:res、最後のレス:end、となっています。 掲示板のサポートに問い合わせたところ、以下のような返事を頂きました。 「BASE1内に日付の表示する変数が御座いますが、これを同様にRES1にも設置します。 BASE1に設置する日付表示については、JAVAスクリプトを使用し、返信記事の無い親記事のみの場合にのみ表示するようにカスタマイズします。 RES1に設置する日付表示については、JAVAスクリプトを使用し、返信記事の最終記事のみに表示と言うようにカスタマイズします」。 長くなりますので、次に回答頂いた方への補足に移ります。

関連するQ&A

  • javascriptの比較演算

    不可解な動作に困っています。 どなたかご教示ください。 <html> <body> <script type="text/javascript"> var a=8; if(10>a>0){document.writeln(a);} else {document.writeln("else");} </script> </body></html> だと、ブラウザで実行すると画面に8と表示されます。 一方 <html> <body> <script type="text/javascript"> var a=8; if(10>a>7){document.writeln(a);}else{document.writeln("else");} </script> </body></html> とすると、実行したときにelseと表示されます。 とても不可解です どうしてでしょうか。

  • JavaScriptの間違いがどこか教えてください。

    JavaScriptを勉強しはじめたばかりで、つまずいております。 時間ごとに違った言葉を表示するというJavaScriptです。 どこが間違えているのかわからないので、教えてください。 間違いはこの中にあるはずなのですが…。 <script type="text/javascript"> <!-- now = new Date(); nowhours = now.getHours(); document.write(nowhours); if (nowhours <= 3) { msg = "こんばんは"; } eles if (nowhours <= 11) { msg = "おはようございます"; } eles if (nowhours <= 16){ msg = "こんにちは"; } eles { msg = "こんばんは"; } document.write(msg); //--> </script> 正しい答えは <script type="text/javascript"> <!-- now = new Date(); nowhours = now.getHours(); document.write(nowhours); if (nowhours <= 3 ) { msg = "こんばんは"; } else if (nowhours <= 11) { msg = "おはようございます"; } else if (nowhours <= 16){ msg = "こんにちは"; } else { msg = "こんばんは"; } document.write(msg); // --> </script> なのですが、どこが違うのかまったくわかりません。

    • ベストアンサー
    • Mac
  • javascriptに関しまして

    javascriptに関しまして if文の処理に関してお聞きしたいことがあります。 <script language="JavaScript"> <!-- myFlg = 0; function myFunc(){ if(myFlg == 0){ document.myFormMeS.value = "こんにちは"; } myflg = 1; else{ document.myFormMeS.value = ""; myFlg == 0; } } //--> </script> <form name="myform"> <input type="text" size="20" name="myFormMeS"> <script language="JavaScript"> <!-- setInterval("myFunc()",500); // --> </script> </form> というサンプルコードの中で、フラグの管理をする際に 初期値として、myFlg = 0をセットしているのでこんにちはと 表示してからmyFlg に1を代入していますが、その後一度if文を抜けて、 もう一度if(myFlg == 0)の判定を行っているのでしょうか? それとも、そのままelse処理に進むのでしょうか・・・? if文を抜けた後にどこの判定に進むのかいまいちよく分かりません。 初歩的な質問になりますが、宜しくお願い致します。

  • JavascriptからJavaへの変え方

    Javascriptで作ったものをJavaにしないといけなくなったのですが 私はJava初心者でまったくわかりません。 色々ネットで調べてみたのですが、どうも難しくて理解することができませんでした。 下にJavascriptで作ったものを載せてるのですがどなたかやり方を教えてもらえないでしょうか? <html> <head> <title>サンプル</title> <script type="text/javascript"> function jikoku() { dd = new Date(); document.F1.T1.value = dd.toLocaleString(); window.setTimeout("jikoku()", 1000); } </script> <script type="text/javascript"> mes = new Array(5); mes[0]="0"; mes[1]="1"; mes[2]="2"; mes[3]="3"; mes[4]="4"; date=(new Date()).getHours(); if( 0 <= date && date <= 5 ){ document.write(mes[0]); } else if( 6 <= date && date <= 10 ){ document.write(mes[1]); } else if( 11 <= date && date <= 16 ){ document.write(mes[2]); } else if( 17 <= date && date <= 19 ){ document.write(mes[3]); } else{ document.write(mes[4]); } </script> <script type="text/javascript"> function Random() { var kazu = Math.random(); kazu = kazu*100; kazu = Math.ceil(kazu); if( kazu<=9 ) document.write('<br/>○1<br/>'); else if( kazu<=19 ) document.write('<br/>○2<br/>'); else if( kazu<=29 ) document.write('<br/>○3<br/>'); else if( kazu<=39 ) document.write('<br/>○4<br/>'); else if( kazu<=49 ) document.write('<br/>○5<br/>'); else if( kazu<=59 ) document.write('<br/>○6<br/>'); else if( kazu<=69 ) document.write('<br/>○7<br/>'); else if( kazu<=79 ) document.write('<br/>○8<br/>'); else if( kazu<=89 ) document.write('<br/>○9<br/>'); else document.write('<br/>○10<br/>'); } Random() </script> <script language="JavaScript"> var imglist = new Array( "sample1.jpg", "sample2.jpg", "sample3.jpg", "sample4.jpg" ); var selectnum = Math.floor((Math.random() * 100)) % imglist.length; var output = "<img src=" + imglist[selectnum] + ">"; document.write(output); </script> </head> </html>

  • PHP「FALSE」や「0」を使った条件文

    「if条件文」の()に「FALSE」や値「0」がはいると なにも考える事無く無条件に 「else」以降の条件が実行になるという決まりなのでしょうか? もしそうであれば条件分にする意味があるのでしょうか? 基本的な質問で申し訳ないのですが 実際に使われる分かりやすい簡単な例があれば ご紹介ください。 よろしくお願いいたします。 例1: if(FALSE){ echo "FALSEではない"; }else{ echo "FALSEです。"; } 例2: if(0){ echo "ゼロではない"; }else{ echo "ゼロです。"; } 例3:(特にこの例は何かおかしいような気がします) if(10-10){ echo "イフが実行"; }else{ echo "エルスが実行"; }

    • ベストアンサー
    • PHP
  • javascriptのif文の書き方で。これは参考書の間違い?

    javascriptのif文の書き方で。これは参考書の間違い? 画像におけるif文は、下記のように、 中カッコを使って、 書かれるべきなのではないでしょうか? if(条件式){ //実行するコード }

  • WordPressでPHPで条件分岐

    WordPressを運用していて、記事内でPHP if文を使って条件分岐をしたいです。 WordPressにて提供されている記事の投稿日を参照して、記事投稿○日以前、以降で表示を切り替えたいです。 あまり詳しくないのですが、取り敢えず下記のようにしてみましたが、動きません。。 if( the_time('Ymd') <= date('Ymd', strtotime("-3 days")) ){    print "前の表示"; }else{    print "先の表示"; } PHP内にWordPressの関数が使えないのかな。とも思っていますが、PHP初心者の為調べ方も解らない状況です。 どなたかお分かりになる方、宜しくお願い致します。

  • IF文

    (A)IF 条件 THEN 単純実行文1 ELSE 単純実行文2 (B)IF 条件 THEN 実行処理1 ELSE 実行処理2 Aの文では単純実行分なのになぜ改行すると(B)の文みたいに実行処理になるのでしょうか? 実行処理と単純実行文の違いを教えてください

  • javascript 演算子の「!」_2

    以前 http://okwave.jp/qa/q8280538.html で同じ質問をして、一度は解決かと思ったのですが、考え直すとまた混乱してきたので、 もう一度質問させてください。 以前と同じく http://www.artemis.ac/contents/javascript/javascript10.htm のスロットに関してです。 STEP 2 画像をまわす > ◆SCRIPTタグ内 にある、 if(!$DR[1] && !$DR[2] && !$DR[3]){ についてです。 お聞きしたいのはこのif文の条件式についてです。 このif文はスロットを回したときに実行されるわけですが、 実行される前に $DR[1] = $DR[2] = $DR[3] = false; というコードが実行されています。 お聞きしたいのは、if文の条件はこのコードの影響を受けるのかどうかです。 仮に受けるとした場合、falseを!で否定するので、結果trueとなり、 ドラムが止まっているときという状態と矛盾するので受けないとは思うのですが・・。 よろしくお願いします。

  • if文が上手くいかない・・・

     連続投稿失礼します。  if文が上手くいきません。$hensuuの値が間違っているのにもかかわらず、条件があっている時の処理が実行されてしまいます。  なにやら癖になっているようで、if文を書くたびこのような事態が発生します。(PHPに限らず、C言語でまで・・・。)一体何が原因なのでしょうか? <?php $hensuu = "right"; if($hensuu = "wrong"){ print <<<_EOT_ 条件に合ってないはずなのに、こっちが表示されちゃう。 _EOT_; } else { print <<<_DRK_ 本来こっちが表示されるはずなのに、表示されない・・・。 _DRK_; } ?>  よろしくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう