• 締切済み

if文でelseが実行されない

function jump(){ if (point_x != ""){ location.href="new_diary.php?x="+point_x+"&y="+point_y; } else { alert ("場所をダブルクリックで指定してください。"); } } このような文で、point_x != ""のときは別ページに飛んでくれるのですが、 elseのときにアラートが表示してくれません。 初歩的な質問だと思いますが、宜しくお願いします。

みんなの回答

  • venzou
  • ベストアンサー率71% (311/435)
回答No.5

#4です。訂正します。 >if (point_x){ これだと point_x == 0 の場合も alert なってしまいます。 if ((point_x) || (point_x == 0)){ location.href="new_diary.php?x="+point_x+"&y="+point_y; } else { alert ("場所をダブルクリックで指定してください。"); }

  • venzou
  • ベストアンサー率71% (311/435)
回答No.4

>if (point_x != ""){ こう書くと""(空文字列)かどうかを調べています。 undefined(未定義)や null は "" とは別物ですよ。 if (point_x){ location.href="new_diary.php?x="+point_x+"&y="+point_y; } else { alert ("場所をダブルクリックで指定してください。"); } 単にこう書くと "" や undefined や null の場合alertが出ます。 ここで明示的に代入しておく方がプロラム的には良いかも。 if (point) { point_x = point.x; point_y = point.y; }else{ point_x = ""; point_y = ""; }

  • ron3
  • ベストアンサー率35% (7/20)
回答No.3

コードをみて、疑問に思ったんですが、 1.point_y とpoint_x は初期化(point_y=""とか)してますか? 2.Listenerのメソッドの中で、if (point)の行の前にalertでメッセージを出すようにして、座標が取れない操作をした場合、そのメッセージがでますか?

noname#22222
noname#22222
回答No.2

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> <html> <title>Test</title> <meta http-equiv="Content-script-Type" content="type"> <script type="text/javascript">  function jump(){   if (X != "")    alert ("X is not null");   else    alert ("X is null")   }   </script> <body onload="X='';jump('');X='A';jump('');"> </body> </html> さて、どちらもOKです。 だとすれば、X=''に相当する代入文はありますか?

tacfore
質問者

補足

GoogleMapsAPIを利用し、ダブルクリックした位置が取得されるんですが、 位置が取得されていない状態だとアラート表示させる仕組みなのです。 <script type="text/javascript"> <!-- var map; function onLoad() {           ~~省略~~ GEvent.addListener(map, 'click', function(overlay, point) { if (point) { point_x = point.x; point_y = point.y; } }); } function jump(){ if (point_x != ""){ location.href="new_diary.php?x="+point_x+"&y="+point_y; }else{ location.href="new_diary.php"; } } --> <a href="#" onClick="jump()">ジャンプ</a> このような感じにしているのですが、位置情報が取得されているときは 別ページにジャンプするのですが、 取得されていない状態では何も反応がないのです。 丸投げっぽい書き方ですみません。 </script>

  • K-1
  • ベストアンサー率21% (832/3844)
回答No.1

alertで文字列を囲んでるのは”じゃなくて’じゃありませんでしたっけ?

tacfore
質問者

補足

ご回答有難う御座います。 "と'どちらで試してみても実行されませんでした。 また、location.hrefなどを使って試してみましたが、 elseのみ実行されませんでした。

関連するQ&A

  • ネストしない複数のif文でelseは必要でしょうか

    if文についての疑問を質問させてください。 if文はelseを挟むことで複数指定したり入れ子にしたりして使えますが、 elseを未入力で下記のように複数指定することは問題があるのでしょうか。 また、このように24個のifを並べるという書き方はよろしくないものなのでしょうか。 <script type="text/javascript"> (function() { var image_obj = new Image(); image_obj.src = "../image/"; var jikan_obj = new Date(); var htime = jikan_obj.getHours(); if(htime==0){alert('日が変わりました');} if(htime==1){alert('夜中です');} if(htime==2){alert('2時です。');} if(htime==3){alert('真夜中です');} if(htime==4){alert('もうじき朝です');} if(htime==5){alert('新聞が届きました');} if(htime==6){alert('朝です');} if(htime==7){alert('忙しいです');} //これが23まで続きます。 if(htime==23){alert('もうじき日が変わります');} })(); </script>

  • リファラの抜け道

    <script> function jump(){if(document.referrer.indexOf("index.html")==-1){location.href="index.html";} else{alert("ok")}} </script> コレはリファラのソースです。 どうやったら、index.htmlに戻らずにアドレス入力でalert関数にたどり着けるのか教えてくださいよろしくお願いします。

  • if~else ifの処理を配列とループを使用して記述したい

    aのときはAの処理、bのときはBの処理、cのときはCの処理をを行い、ただし条件が真になったら以降の条件を判断しないといった処理(1)を、ループを用いて実現したいと考えております。 色々と試行錯誤したのですが(2)、なかなか実現することができず、困っております。 つきましては恐れ入りますが、正しい記述方法をご教授いただけないでしょうか。JAVAスクリプト全くの初心者ですが、何卒よろしくお願いいたします。 (1) txt = "abcd";//判断対象文字列 data0=txt.match(/a[^\&\"]*d/im); data1=txt.match(/a[^\S<>\&\"]*b/im); data2=txt.match(/b[^\S<>\&\"]*c/im); alert0="A"; alert1="B"; alert2="C"; //条件が合致しない時は警告を発し、合致する時には指定ページを表示します。 if (!data0) {alert(alert0)}; else if (!data1){alert(alert1)}; else if (!data2){alert(alert2)}; else location.href = "ok.htm"; 以上の処理をループを用いて実現したいと考え、一応以下のように記述してみたのですが、動作しませんでした。また、条件が真になったら、以降の条件を判断しない方法も分かりません。何卒よろしくお願いいたします。 (2) for(a=0;a<=2;a++){ var aler=new Array(2); var data=new Array(2); aler[0]=alert("A"); aler[1]=alert("B"); aler[2]=alert("C"); txt = "abcd"; data[0]="(/a[^\&\"]*d/im)"; data[1]="(/a[^\S<>\&\"]*b/im)"; data[2]="(/b[^\S<>\&\"]*c/im)"; if (!txt.match data[a]) { aler[a]; } else location.href = "ok.htm"; }

  • jQuery POST送信後のページ更新

    いつもお世話になっております。 jQuery+PHPにて、POST送信し、 戻り値の条件分岐でページを遷移させたり、 更新させたいと思っています。 ご教授願えないでしょうか。 index.php内 [ソース] $.POST('./search.php', {'code':12345'}, function(data){ if(data['type'] == '1'){ alert('見つかりません') location.href='./index.php'; } else if(data['type'] == '2'){ location.href='./edit.php; }, 'json' ); 見つかりませんのアラートを表示した後、 location.hrefだと、リロードする事なく。 またlocation.reloadにしても同様です。 $.POST外でlocation.reloadを指定すると リロードしてくれるのですが、$,POST送信してくれません。 もし不可能であれば、location.hrefで別のファイルを経由させて実施しようと思っています。 宜しくお願いします。

    • ベストアンサー
    • AJAX
  • if文が機能しません

    初歩的な質問でお恥ずかしいのですが、簡単なif文が、機能してくれません。 良かったら、アドバイスよろしくおねがいします 以下がソースとなります。 double x, a; x=(int) (rand() / (RAND_MAX+1.0) * 100); if (0 <= x < 50) {        a=1; } else {        a=2; } これなんですが、結果が全てa=1となってしまい、分岐してくれません。 なぜでしょうか?

  • VB.net フォームをなめらかに移動する方法

    フォームをなめらかに移動する方法はないでしょうか? 以下のコードのように、Locationで位置を変更すると、カクカク移動してしまいます。 ご存知の方おしえてください。どうぞよろしくお願いいたします。 Private Sub Form1_Mousemove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove Dim WorkingArea As Rectangle = Screen.PrimaryScreen.WorkingArea Dim MousePos As Point = Me.PointToClient(Windows.Forms.Cursor.Position) '上に移動 If Me.Size.Height * 0.8 < MousePos.Y And Me.Location.Y > 0 Then Me.Location = New Point(Me.Location.X, Me.Location.Y - 20) End If '下に移動 If Me.Size.Height * 0.2 > MousePos.Y And (Me.Location.Y + Me.Size.Height) < WorkingArea.Height Then Me.Location = New Point(Me.Location.X, Me.Location.Y + 20) End If '左に移動 If Me.Size.Width * 0.8 < MousePos.X And Me.Location.X > 0 Then Me.Location = New Point(Me.Location.X - 20, Me.Location.Y) End If '右に移動 If Me.Size.Width * 0.2 > MousePos.X And (Me.Location.X + Me.Size.Width) < WorkingArea.Width Then Me.Location = New Point(Me.Location.X + 20, Me.Location.Y) End If End Sub

  • 基礎的なif文プログラムが動きません

    お世話になります。 Javascript初心者です。 とても基礎的なif文が動かなくて困っています。 ある名前のクッキーが既に存在していたら、あるページへリダイレクトさせる、というプログラムです。 クッキーの有無を確認するには <script type="text/JavaScript"> function getCookie(クッキー名) { if (document.cookie.length>0) { 実行文 } return ""; } </script> で、いける事が分かりました。 また、一方、リダイレクトするには location.href='アドレス'; で、いける事がわかりました。 そこで、これを組み合わせて、 <script type="text/JavaScript"> function getCookie(クッキー名) { if (document.cookie.length>0) { location.href='アドレス'; } return ""; } </script> とやってみたのですが、これが思う様に動きません。 どうしたら動く様になるのか、教示いただけると幸いです。

  • 実行すると if文 に矛盾

    #include <stdio.h> #include <math.h> int main(void) { /* */ double c, l, m, n, w=1, x[4]={1,2,3,4}, y[4]={1,2,3,4}; /* */ int j, k, u, v; /* */ for(j=0; j<3; j++){ /*   */ for(k=j+1; k<4; k++){ /*     */ l = sqrt( pow(x[j]-x[k], 2) + pow(y[j]-y[k], 2) ); /*     */ m = sqrt( pow(x[j], 2) + pow(y[j], 2) ); /*     */ n = sqrt( pow(x[k], 2) + pow(y[k], 2) ); /*     */ c = ( pow(m, 2) + pow(n, 2) - pow(l, 2) ) / (2*m*n); /*☆    */ /* if(c=w) ; */ /*※    */ if(c<=w){ /*       */ w = c; /*       */ u = j; /*       */ v = k; /*●    */ } else if(c>w){ /*       */ if(c=w) /*         */ printf("no way\n"); /*     */ } /*   */ } /* */ } /* */ printf("[ P%d P%d ]\n", u, v); /* */ return(0); } -------------------------------------------------------------------------------- 上記プログラムなのですが、Visual C++ でこれを実行すると、 ------------------------------ no way no way no way no way [ P0 P2 ] Press any key to continue ------------------------------ と出力されてしまいました。 ☆行のif文のコメントを外して直前で c=w を評価すると、※の部分が正常に処理されました。 なぜこのような矛盾が生じているのでしょうか? 何かご意見いただければ幸いです。 ※今回 Visual C++ でしか実行できるものがなかったため、他では確認できておりません。恐縮です。 ※この投稿の文字量の制限のため、プログラムの解説は割愛しました; ※補足などでお伝えできればよいのですが…。

  • jqueryでアクセス時一度だけリロード

    Firefoxで別ページからアクセスした際にウインドウの位置がずれないようにする対策で、 アクセス時に一度だけリロードするようプログラムしました。 if($.cookie("access") == undefined) { alert("1"); $.cookie("access","true"); setTimeout(function(){ var url = location.href; location.href = url; },300); } else { alert("2"); $.removeCookie("access"); } jquery.cookieを使って上記のように実装したのですが、 location.hrefした後にalert("2")に入らない状態です。 現状ですと、2回URLを手動で叩かないと、alert("2")に入らない状態で、 一度のアクセスでalert("2")に入りつつ、2回目のアクセスでcookieを削除できればと思います。 cookieを使わない方法でももちろん大丈夫なのですが、 対策方法がお分かりいただけましたらご教授のほどよろしくお願いします。

  • はじめまして。今回、大学でのjavaの課題の最後の方がわからなくって、

    はじめまして。今回、大学でのjavaの課題の最後の方がわからなくって、皆さんにアドバイスをいただきたいと思い質問させていただきます。問題の文章が「2つの端点が(1,1) (8,8)であるLineSegment を1 つ作成し、順次、linearTransfer した線分を10 個作成し、10 個の線分の形状を画面表示するプログラムを作成しなさい。10 個の線分は、後に利用することを考慮し、配列に格納しなさい。」というもので、ソースが、 /*キーボード入力がありますが、すでに与えられており、字数の関係上省略させていただきます*/ class Point{ double x;//double xを定義 double y;//double xを定義 Point(){ this.x = 0;//xを0にする this.y = 0;//yを0にする } Point(double x, double y){//ポイント内のx,y を定義 this.x = x; this.y = y; } Point linearTransfer(){ double x = 6 * this.x + 4 * this.y; double y = -2 * this.x + 1 * this.y; Point p = new Point(x , y); return p; } } class LineSegment{ public static void main(String[] args){ Input in = new Input(); double x = in.inputDouble("Input Point :"); double y = in.inputDouble("Input Point :"); double x1 = in.inputDouble("Input Point :"); double y1 = in.inputDouble("Input Point :"); Point p = new Point(x, y); p = p.linearTransfer(); Point q = new Point(x1, y1); q = q.linearTransfer(); ここまでできたのですが、ここからができなくって困っております。皆さんアドバイス宜しくお願いいたします。

専門家に質問してみよう