• ベストアンサー

javascript の?について

javascriptの公開されているライブラリを利用して、 画像のスライド等に挑戦しました。 ソースコードを見てみようとしたのですが、 一部分ですが、 if(this.r){n=d==1?n==this.l?0:n:n<0?this.l-1:n} 上記のようなコードが見つかりました。 ソースの中に記述されている ? とはなんでしょうか。 googleで調べようとしましたが「?」をうまく調べることができませんでした。 よろしければご教授願います。

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

  • ベストアンサー
  • tracer
  • ベストアンサー率41% (255/621)
回答No.2

A=(X)?B:C 上の式は、次の式と意味合いとしては同じです。 if(X){  A=B; }else{  A=C; } Xが真ならBをAに代入。 Xが偽ならCをAに代入。 場合によっては、ifより高速に処理できることもあるそうです。 個人的には、ifより記述がシンプルなので、よく使います。

kureakai
質問者

お礼

情報ありがとうございます。 わかりやすく説明して頂きありがとうございました。 理解することができました。

その他の回答 (1)

  • hitomura
  • ベストアンサー率48% (325/664)
回答No.1

これは条件演算子と呼ばれているものです。 ?と:とを合わせてそう呼ばれます。 ?の前の条件式がtrueならば?と:の間の値を、falseならば:以降の値をとります。 具体的に言うと、 x = n==1 ? 1 : 2; という式で、nの値が1ならばxは1に、それ以外の場合はxは2になります。 ご質問の式はこれが二重に使用されています。分かりやすく外側の条件演算子の各項を括弧でくくると n = (d==1)?(n==this.l?0:n):(n<0?this.l-1:n) となります。 これ以外のコードが分からないのでこのコードが何を意味するのかはよく分かりませんが、なにやらnの値が範囲外に出ないように調整しているように思えます(dが何を表す値か分かれば……)。

kureakai
質問者

お礼

情報ありがとうございます。 わかりやすく説明して頂きありがとうございました。 理解することができました。

関連するQ&A

  • JavaScriptが使えるかどうか判断する?

    こんばんは,よろしくお願いします。 よく,JavaScriptの解説書などに,「avaScriptが使えるかどうか判断する方法」などと書いてあって,次のようなコードが載っていますよね。 if(navigator.javaEnabled() == false){ alert("JavaScriptを有効にしてください。"); history.back(); } でも,ここで疑問です。そもそも,JavaScriptが使えないのならば, このif文そのものが走らないのではないでしょうか? このコードは,どこにどのように記述すれば有効になるものなのでしょうか? よろしくおねがいします。

  • javascriptでサイト内検索できますか?

    こんにちわ よろしくお願いします。 javascriptでサイト内検索をできるフリーのソースコードがあれば教えてください。 googleを利用したのは使いたくありません…わがままですがよろしくお願いいたします。

  • CSS, Javascript読み込めない

    Windows10のノートパソコンを使用しています。各ブラウザの設定は初期設定のままです。 ローカル(PC内)でHTMLファイルにCSSファイル1つとJavascriptファイル1つを読み込ませ、Google Chrome, Microsoft Edge, Internet Explorerで開いたのですが、どのブラウザでもCSSもJavascriptも認識されていません。 ファイル名とそのパスやソースコードを確認しましたが、記述に間違いはありません。htmlファイルと同じ階層にCSSファイルとJavascriptファイルを入れています。 Google Chromeの検証機能で確認するとCSSとJavascriptのファイルが見つかりませんとなっています。 ネットで調べましたが原因は不明です。以上のことから、CSS、Javascriptが読み込めない原因として考えられることを教えて下さい。

    • ベストアンサー
    • HTML
  • JavaScript 自体のソースコード

    JavaScript 自体のソースコードって見ることできますか? あるコードを試していてエラーをcatchしたのですが、catchしたのがErrorオブジェクトではなく単なる配列でした。自分ではthrowしてないし、使用しているライブラリのD3jsのソースコードをダウンロードしてthrow部分を見たのですが、値のみをthrowしている場所がありません。 残りはJavaScript自体のthrow部分を見るしかないのですが、そんなことできますか?

  • JavaScript で "..." とされた部分

    JavaScript で "..." とされた部分はなんの省略でしょうか? とある jQuery ファイルを解析しているのですが if(typeof b=="strin...=1){ という記述がありました。 ダブルクォーテーションが一つだけ…というのもよくわからないのですが、 それに続く "strin..."の部分は何を表しているのでしょうか? 同じソースの中に bn(l[....duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update() という部分も見られ、こちらは "." が 4 つ並んでいます。 ちなみに WordPress の中の load-scripts.php?c=1&load=jquery,nav-menu,utils&ver=3.4.1 を解析しています (管理画面の外観→メニューの中で使われている部分です)。 よろしくお願いします。

  • JavaScriptエラーが出ます…

    2つのJavaScriptエラーが出て大変困っております。 どなたか分かる方いらっしゃいませんでしょうか? ※当方はJavaScriptは分かりません。 検索にて調査いたしましたが、情けないですがもうお手上げ状態です。 ▼1つめ----------------------------------------------▼ メッセージ: 'null' は Null またはオブジェクトではありません。 ライン: 8 文字: 3 コード: 0 コード内容 以下 var accordion=function(){ var tm=10; var sp=10; function slider(n){ this.nm=n; this.arr=[]; this.sel='' } slider.prototype.init=function(t,c,k){ var a,h,s,l,i; a=document.getElementById(t); h=a.getElementsByTagName('dt'); s=a.getElementsByTagName('dd'); l=h.length; for(i=0;i<l;i++){ var d=h[i]; this.arr[i]=d; d.onclick=new Function(this.nm+".process(this)"); if(k!=null&&c==i){this.sel=d.className=k} } l=s.length; for(i=0;i<l;i++){ var d=s[i]; d.maxh=d.offsetHeight; if(c!=i){d.style.height='0'; d.style.display='none'} } } slider.prototype.process=function(d){ var i,l; l=this.arr.length; for(i=0;i<l;i++){ var h=this.arr[i]; var s=h.nextSibling; if(s.nodeType!=1){s=s.nextSibling} clearInterval(s.timer); if(h==d&&s.style.display=='none'){ s.style.display=''; setup(s,1); h.className=this.sel} else if(s.style.display==''){setup(s,-1); h.className=''} } } function setup(c,f){c.timer=setInterval(function(){slide(c,f)},tm)} function slide(c,f){ var h,m,d; h=c.offsetHeight; m=c.maxh; d=(f==1)?Math.ceil((m-h)/sp):Math.ceil(h/sp); c.style.height=h+(d*f)+'px'; c.style.opacity=h/m; c.style.filter='alpha(opacity='+h*100/m+')'; if(f==1&&h>=m){clearInterval(c.timer)} else if(f!=1&&h==1){c.style.display='none'; clearInterval(c.timer)} } return{slider:slider} }(); ▲1つめここまで----------------------------------------------▲ ▼2つめ----------------------------------------------▼ メッセージ: 'obj.length' は Null またはオブジェクトではありません。 ライン: 238 文字: 10 コード: 0 コード内容 以下 http://www.myulond.com/js.txt ▲1つめここまで----------------------------------------------▲ どうぞ、ご教授よろしくお願いいたします。

  • javascriptでループをやめたい

    javascript初心者です。 下記の様にソースが書いてあります。 画像が表示され、順番に表示されるのはいいのですが、 最後の画像になった時に、最初の画像に戻り、永遠と画像がループし、 表示されてしまいます。最後の画像になった時に、表示を止め、 最後の画像のまま表示を止めたいのですが、わかりません。 ご教示お願いいたします。 <SCRIPT language="JavaScript"> <!-- FITime=1; FOTime=8; n=10; flg=1; num=0; cnt=7; Fna="./img"; Fexp="jpg"; // 以下スクリプト本体 function fade(img){ if(flg==1){ document.images[img].src=Fna+num%cnt+"."+Fexp; if(n<=0) flg=0; document.images[img].filters['alpha'].opacity=n; if(n>=99)speed=0.05;else speed=5; n-=speed; setTimeout("fade('"+img+"')",FOTime); } else{ document.images[img].src=Fna+(num+1)%cnt+"."+Fexp; document.images[img].filters['alpha'].opacity=n; if(n>=98)speed=0.05;else speed=2; n+=speed; if(n>=100) {flg=1;++num;if(num%cnt==0){num=0;}} setTimeout("fade('"+img+"')",FITime); } } //--> </SCRIPT> </head> <img src="img0.jpg" name="img" style="filter:alpha(opacity=100)">

  • JavaScriptって何者だ。

    参考までにソースを見ることができました。 HTMLで書かれているのは解りそうな気がしますが、JavaScriptは一生理解できないような気がします。メチャクチャ複雑でゴチャゴチャしています。 これって人間業じゃないような気がします。 マダ、PHPやPerl等も覚えようと思っていますが、JavaScriptはメチャクチャ 難しそうです。 WEBデザイナーの方なんか余程勉強したのでしょうね。 お先真っ暗です。 どうやって勉強するのかアドバイスをください。 宜しくお願い申し上げます。 n[e].exports}if("function"==typeof __nr_require)return __nr_require;for(var o=0;o<e.length;o++)r(e[o]);return r}({1:[function(t,n,e){function r(t){try{s.console&&console.log(t)}catch(n){}}var o,i=t("ee"),a=t(15),s={};try{o=localStorage.getItem("__nr_flags").split(","),console&&"function"==typeof console.log&&(s.console=!0,o.indexOf("dev")!==-1&&(s.dev=!0),o.indexOf("nr_dev")!==-1&&(s.nrDev=!0))}catch(c){}s.nrDev&&i.on("internal-error",function(t){r(t.stack)}),s.dev&&i.on("fn-err",function(t,n,e){r(e.stack)}),s.dev&&(r("NR AGENT IN DEVELOPMENT MODE"),r("flags: "+a(s,function(t,n){return t}).join(", ")))},{}],2:[function(t,n,e){function r(t,n,e,r,o){try{d?d-=1:i("err",[o||new UncaughtException(t,n,e)])}catch(s){try{i("ierr",[s,c.now(),!0])}catch(u){}}return"function"==typeof f&&f.apply(this,a(arguments))}function UncaughtException(t,n,e){this.message=t||"Uncaught error with no additional information",this.sourceURL=n,this.line=e}function o(t){i("err",[t,c.now()])}var i=t("handle"),a=t(16),s=t("ee"),c=t("loader"),f=window.onerror,u=!1,d=0;c.features.err=!0,t(1),window.onerror=r;try{throw new Error}catch(l){"stack"in l&&(t(8),t(7),"addEventListener"in window&&t(5),c.xhrWrappable&&t(9),u=!0)}s.on("fn-start",function(t,n,e){u&&(d+=1)}),s.on("fn-err",function(t,n,e){u&&(this.thrown=!0,o(e))}),s.on("fn-end",function(){u&&!this.thrown&&d>0&&(d-=1)}),s.on("internal-error",function(t){i("ierr",[t,c.now(),!0])})},{}],3:[function(t,n,e){t("loader").features.ins=!0},{}],4:[function(t,n,e){function r(t){}if(window.performance&&window.performance.timing&&window.performance.getEntriesByType){var o=t("ee"),i=t("handle"),a=t(8),s=t(7),c="learResourceTimings",f="addEventListener",u="resourcetimingbufferfull",d="bstResource",l="resource",p="-start",h="-end",m="fn"+p,w="fn"+h,v="bstTimer",y="pushState",g=t("loader");g.features.stn=!0,t(6);var b=NREUM.o.EV;o.on(m,function(t,n){var e=t[0];e instanceof b&&(this.bstStart=g.now())}),o.on(w,function(t,n){var e=t[0];e instanceof b&&i("bst",[e,n,this.bstStart,g.now()])}),a.on(m,function(t,n,e){this.bstStart=g.now(),this.bstType=e}),a.on(w,function(t,n){i(v,[n,this.bstStart,g.now(),this.bstType])}),s.on(m,function(){this.bstStart=g.now()}),s.on(w,function(t,n){i(v,[n,this.bstStart,g.now(),"requestAnimationFrame"])}),o.on(y+p,function(t){this.time=g.now(),this.startPath=location.pathname+location.hash}),o.on(y+h,function(t){i("bstHist",[location.pathname+location.hash,this.startPath,this.time])}),f in window.performance&&(window.performance["c"+c]?window.performance[f](u,function(t){i(d,[window.performance.getEntriesByType(l)]),window.performance["c"+c]()},!1):window.performance[f]("webkit"+u,function(t){i(d,[window.performance.getEntriesByType(l)]),window.performance["webkitC"+c]()},!1)),document[f]("scroll",r,{passive:!0}),document[f]("keypress",r,!1),document[f]("click",r,!1)}},{}],5:[function(t,n,e){function r(t){for(var n=t;n&&!n.hasOwnProperty(u);)n=Object.getPrototypeOf(n);n&&o(n)}function o(t){s.inPlace(t,[u,d],"-",i)}function i(t,n){return t[1]}var a=t("ee").get("events"),s=t(18)(a,!0),c=t("gos"),f=XMLHttpRequest,u="addEventListener",d="removeEventListener";n.exports=a,"getPrototypeOf"in Object?(r(document),r(window),r(f.prototype)):f.prototype.hasOwnProperty(u)&&(o(window),o(f.prototype)),a.on(u+"-start",function(t,n){var e=t[1],r=c(e,"nr@wrapped",function(){function t(){if("function"==typeof e.handleEvent)return e.handleEvent.apply(e,arguments)}var n={object:t,"function":e}[typeof e];return n?s(n,"fn-",null,n.name||"anonymous"):e});this.wrapped=t[1]=r}),a.on(d+"-start",function(t){t[1]=this.wrapped||t[1]})},{}],6:[function(t,n,e){var r=t("ee").get("history"),o=t(18)(r);n.exports=r,o.inPlace(window.history,

  • WebBrowser で JavaScript を見るには

    お世話になっています。 インターネットエクスプローラで、 表示 - ソース とすると <script language="JavaScript"> と言う記述の下に ソースコードを見ることができますが、 WebBrowser で WebBrowser.Document.Body とか WebBrowser.Document.OuterHTML とかしても、 ソースコードを見ることができないのです。 見る方法について教えて下さい。 補足 Internet Explorer Version 6.0 言語は Visual Basic 6.0 がいいですが、 C++ でもいいです。よろしくお願いします。

  • JavaScriptライブラリってそもそも・・・

    私はweb制作をはじめて3年たらずのwebデザイナーです。 プログラムはまったくと言っていいほど書けないので、アニメーションなどを実装したいときはwebで拾った著作権的に大丈夫なものを使いまわしています。 ほとんどjqueryライブラリを使ったものです。 最近はそのソースも少しは読めるようになり、少し手を加えられるようになりました。 そこで、かなり根本的な疑問がわいてきたのです。 ◆JavaScriptライブラリってそもそもなにが書いてあるものなのでしょうか? ※JavaScriptライブラリとはで調べたのですが、難しい言葉が多くて・・・ (jqueryとは具体的にどんなものが書いてあるものなのか。) ◆jqueryのアドオンとかjqueryのプラグインとか書いてあるのをよく見かけますが、これはなんのでしょうか?アドオンとプラグインは違うものなのでしょうか? ◆jqueryを読み込んで実行するためのスクリプトをソースに追加すれば意図した動きになりますよね。(アコーディオンメニューなど) ↓こういうもの=========== <script type="text/javascript"> $(function(){ // ここにコードを書いていく。 }); </script> これは「jqueryライブラリを使用して作ったプログラム」という言い方であっているのでしょうか? それともこのソースに追加するスクリプトのことをアドオンというのでしょうか? 無知で恥ずかしいのですが、この辺のことをきっちり理解できれば、もう少し自分のできる範囲が広がるのではないかと思い、質問しました。 よろしくお願いします。