JavaScriptの比較演算

このQ&Aのポイント
  • JavaScriptの比較演算について困っています。10より大きく、かつ0より大きいという条件の場合、なぜelseが表示されるのでしょうか。
  • JavaScriptの比較演算で不可解な動作に困っています。条件式(10>a>7)の場合、elseが表示されてしまいます。
  • JavaScriptの比較演算について質問です。条件式(10>a>7)がfalseになり、elseが表示されるのはなぜでしょうか。
回答を見る
  • ベストアンサー

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と表示されます。 とても不可解です どうしてでしょうか。

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

  • ベストアンサー
  • Chaire
  • ベストアンサー率60% (79/130)
回答No.2

不可解でも何でもありません。規定の動作です。 10 > 8 > 0 = (10 > 8) > 0 = true > 0 = 1 > 0 = true 10 > 8 > 7 = (10 > 8) > 7 = true > 7 = 1 > 7 = false

hyugazin
質問者

お礼

教えていただきありがとうございます!!! 自分の間違いでした!! shiren2さんのおかげで、正しく記述できるようになりましたが、 Chaireさんのおかげで、動き方まで詳しく理解することができました。 ありがとうございました。

その他の回答 (1)

  • shiren2
  • ベストアンサー率47% (139/295)
回答No.1

JavaScriptって比較演算子をいくら並べてもエラーにならないんですね…。 とりあえずこういった記述はありませんので、実装系依存(未定義の動作)です。 x (10>a>0) x (10>a>7) o (10 > a && a > 0) o (10 > a && a > 7)

hyugazin
質問者

お礼

ありがとうございます!! 勘違いして混乱していました。 とても助かりました。

関連するQ&A

  • javascript 初心者です。

    下記のソースのどこが間違っているのでしょうか。 <body> <script type="text/javascript" language="javascript"> <!-- var us; us = document.getElementById("uuss"); if ( us == 0 ){ document.write("オッケーです。"); }else if ( us == 1 ){ document.write("エヌジーです"); }else if ( us == 2 ){ document.write("未定です"); }else if ( us == 3 ){ document.write("空欄です"); } // --> </script> <div id="uuss">1</div> </body> 例えば<div id="uuss"> </div>の部分に1と入力すると、 「エヌジーです」という文字列を表示させたいのですが ブラウザで見ると「1」と出てしまいます。 よろしくお願いします。

  • JavaScriptのコードの間違いを教えて

    いつもお世話になっております。 現在、JavaScriptの勉強をしているのですが、if構文のところでつまずいてしまいした。 下のコードがうまく実行できません。 間違いを指摘して頂ければと思います。 <doctype! html> <html lang="ja"> <head>    <meta charset="UTF-8">    <title>Javascript</title> </head> <body> <script type="text/javascript">    var x = window.prompt("好きな値を入力してください","100");    if (x>100)       {window.document.write("100より大きいです");}    else {if(x<100))       {window.document.write("100より小さいです");}       else {if(x=100))          {window.document.write("100です");}       }    } </script> </body> </html> なお、テキストエディタで記述し、実行はGoogleChromeで行いました。 よろしくお願いします。

  • Javascriptについて教えてください。

    Javascriptについて教えてください。 整数を入力してその入力した整数の約数の数を表示するプログラムを つくりたいのですがどうすればよいのでしょうか? 例えば、6と入力したらブラウザ上に約数の個数つまり、4と表示します。 また0以下の数字は整数を入力してくださいと表示されるようにしたいです。 途中までは作りました。 解説付きで教えてください。 <html> <head> <title>整数の約数の数を表示する</title> </head> <body> <p><script type="text/javascript"> <!-- var number; var i; number = prompt("整数を入力してください"); for(i = 0; i < 10;i++){ if(number <= 0) document.write("整数を入力してください。"); else if(number >= 1)

  • 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>

  • javascriptで困っています。教えてください

    以下のようにjavascriptの内容を書いた外部のテキストファイルを読み込んで、実行しようとしているのですが、うまくいきません。普通にjavascriptを読み込むのは分かっているのですが、このような方法ができないのでしょうか?よろしくお願いします。 <!doctype html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>無題ドキュメント</title> </head> <body> <div id="jsbox"></div> <script type="text/javascript"> var jsbox = document.getElementById("jsbox"); //非同期通信///////////////////////////////////////////// var xmlHttp; loadText(); function loadText(){ if (window.XMLHttpRequest){ xmlHttp = new XMLHttpRequest(); }else{ if (window.ActiveXObject){ xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); }else{ xmlHttp = null; } } xmlHttp.onreadystatechange = checkStatus; xmlHttp.open("GET", "http://xxxxxxxxxxxx/js_test.txt", true); xmlHttp.send(null); } function checkStatus(){ if (xmlHttp.readyState == 4 && xmlHttp.status == 200){ var str = xmlHttp.responseText;alert(str); jsbox.innerHTML = str; test_js(); } } ///////////////////////////////////////////////////////////////// </script> </body> </html> テキストファイルをhttp://xxxxxxxxxxxx/js_test.txtに置き、テキストファイルの内容が <script type="text/javascript"> function test_js(){ alert("test"); } </script>

  • JavaScriptのソース一部が画面にそのまま表示されてしまう

    下記のリストは投稿する画像の確認をするPearCGIのJavaScriptです <SCRIPT language="JavaScript"> <!-- var CR = "\\r"; var LF = "\\n"; var tag_change; var amp_change; var space_change; function check2(Form1){ var new2 = window.open('','new2','scrollbars=yes, resizable=1, WIDTH=100, HEIGHT=100'); new2.moveTo(0,0); new2.resizeTo(700,800); new2.focus(); whole = 2; h_mode = 1; space_change = 1; tag_change = 1; amp_change = 1; honbun = 1; new2.document.writeln("<HTML lang='ja'>"); new2.document.writeln("<HEAD>"); new2.document.writeln("<META HTTP-EQUIV=\\"Content-Script-Type\\" CONTENT=\\"text/javascript\\">"); new2.document.writeln("<TITLE>画像コメント確認<"+"/TITLE>"); new2.document.writeln("<"+"/HEAD>"); new2.document.writeln("<BODY BACKGROUND='./kabe/k2.gif'>"); new2.document.writeln("<FONT SIZE=4 COLOR='NAVY'>"); idata = window.document.Form1.pr.value; new2.document.writeln(lineX(idata)); new2.document.writeln("<"+"/FONT>"); new2.document.writeln("<CENTER>"); imag = "file:///" + document.Form1.file_1.value.replace(/\\\\/g, '/'); new2.document.writeln("<img src=\\""+imag+"\\" alt='画像がありません'>"); new2.document.writeln("<"+"/CENTER>"); new2.document.writeln("<SCRIPT type='text/javascript'>"); new2.document.writeln("<!-"+"-"); new2.document.writeln("var sw = confirm('画像、コメントOKですか?');"); new2.document.writeln("<"+"/SCRIPT>"); new2.document.writeln("<"+"/BODY>"); new2.document.writeln("<"+"/HTML>"); new2.document.close(); if (sw = new2.sw) { new2.close(); // new2 はレスと画像を確認したwindow var new1 = window.open('','new1', 'width=50, height=50,resizable=1'); new1.close(); } else { new2.close(); // new1 は画像確認したwindow var new1 = window.open('','new1', 'width=50, height=50,resizable=1'); new1.close(); } return sw; } //--> </SCRIPT> ************************* CGIを実行すると 下記のJavaScriptのソースが画面の上部に表示されてしまいます どこが間違っているのか分かりません よろしくお願いします。 ****************************** "); // new2.document.writeln(""); // idata = window.document.Form1.pr.value; // new2.document.writeln(lineX(idata)); // new2.document.writeln("<"+"/FONT>"); // new2.document.writeln(" "); // imag = "file:///" + document.Form1.file_1.value.replace(/\\/g, '/'); // new2.document.writeln(""); // new2.document.writeln("<"+"/CENTER>"); // new2.document.writeln("

  • 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で、「画像をクリックしたらその画像を交互に大きくしたり小さくしたりする」というプログラムを書いたのですが、2回クリックしたら画像をクリックしても何も起こらなくなってしまいました。どうしたら解決するでしょうか? <html><head><title>test</title> <script type="text/javascript"><!-- x=128; y=128; function kaeru(){ document.images["gazou"].height = x; document.images["gazou"].width = y; if(x=64){x=128; y=128;} if(x=128){x=64; y=64;} } //--></script> </head><body> <a href="JavaScript:kaeru()"> <image src="co.gif" id="gazou" width="64"height="64"> </a> </body></html> 回答よろしくお願いします。 ちなみに if(x=128){x=64; y=64;} の所はelseにしようと思っていたのですが、elseにしたらそのelse文が実行されませんでした。

  • 実行できず、エラーになってしまう(オブジェクトを指定してください。)

    下記のソースを実行した場合、エラーになってしまいます。 エラー個所がどうしてもわかりません。 どなたか教えていただけないでしょうか。 よろしくお願いします。 <html> <head> <script type="text/javascript"> <!-- function froms() { for (i = 0; i <= 5; i++) { document.writeln("<INPUT TYPE=\"text\" SIZE=\"2\" READONLY>\n"); document.writeln("<INPUT TYPE=\"text\" SIZE=\"9\" READONLY>\n"); document.writeln("<INPUT TYPE=\"text\" SIZE=\"10\" READONLY>\n"); document.writeln("<INPUT TYPE=\"text\" SIZE=\"3\" READONLY>\n"); } } // --> </script> </head> <body> <script type="text/javascript">forms();</script> </body> </html> -----------エラーメッセージ--------------- ライン :17(現在は22行です(<script type="text/javascript">forms();</script>)) 文字 :1 エラー :オブジェクトを指定してください。 コード :0 URL :保存している場所

  • Smarty変数の値をJavascript変数代入

    よろしくお願いします。 SmartyのテンプレートにPHPファイルからassignされた変数を、 Javascriptの変数に割り当てたいと思います。 Smartyのテンプレート内では、デフォルトの設定だと、 {$hoge} として、値をHTMLとして書き出す仕様ですが、 色々な諸事情から、このデフォルト設定を、 {{$hoge}} として、{ を二度重ねないと機能しないように設定変更しています。 そこで、下記のようなJavascriptを実行しても上手くいかず、かなりはまってしまってます。 お助けください。 ※ダメな例 <script type="text/javascript"> var balloonA = {{$hoge}}; document.writeln (balloonA); </script> ※↓これだと当然出力されます。 ※aaaaa と表示される。 <script type="text/javascript"> var balloonA = "aaaaa"; document.writeln (balloonA); </script> なぜ、上の書き方だと変数内の値を取得できないのでしょうか? "{{$hoge}}"や'{{$hoge}}' として試しました。でもだめです。 色々ネットで探しましたが、 {literal} を使って・・・・というのもやりましたが、ダメでした。 そもそも、Smartyのデフォルト設定を {{ に変更しているので関係ないと思います。 ん~~何卒お力をおかしください。

    • 締切済み
    • PHP

専門家に質問してみよう