のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,062,836人
昨日:no data人
今日:
最近の注目
人気の最安値情報

    私的良スレ書庫

    不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
    ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

    元スレ+ JavaScript の質問用スレッド vol.107 +

    JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    51 : Name_Not - 2013/07/24(水) 20:16:46.62 ID:NX7SNNHd (+4,-29,-67)
    jQueryの$.when内でfor文を使うことはできないのでしょうか?
    $.whenを使って複数のAjax処理を引数を保持しながら行いたいのです。
    $.whenは並列処理とありますが、直列で同期処理を行えますよね?
    ご教示願います。
    http://jsfiddle.net/HynTa/2/
    52 : Name_Not - 2013/07/24(水) 20:36:29.46 ID:??? (+18,-29,-1)
    i<5
    53 : Name_Not - 2013/07/24(水) 20:46:17.27 ID:??? (+52,+22,-12)
    >>52
    thx.
    たまには早く帰って寝るわ。
    54 : 51 - 2013/07/24(水) 20:54:26.51 ID:??? (+3,-30,-192)
    あら。でもやっぱ期待した結果と違うわ。
    hoge2が呼ばれた時点でhoge2の中の$.whenのdoneを実行したいんです。

    つまり、console.log(jdata2.user.company);が毎回呼ばれるのが期待動作なのですが、
    実行結果を見ると、console.log(jdata2.user.company);が最後にまとめて実行されています。
    これをどうにかしたいです。要はやりたい事は
    $.when~done($.when~done($.when~done())).....
    みたいな事です。最初のajaxの返り値を以降の$.when~doneで利用したいのです。
    その際にはループ処理もあるので、同期を取りたいです。
    56 : 51 - 2013/07/24(水) 21:04:32.33 ID:??? (-1,-29,-38)
    >>55
    何となくは分かるが、知らん。
    textarea 色 文字でぐぐって。
    最近、githubのtextareaの色文字のホットエントリーを見た気がする。
    57 : Name_Not - 2013/07/24(水) 21:49:37.96 ID:??? (+38,-30,-182)
    >>51
    JavaScriptの非同期処理を誤解している。
    hoge2() のなかの.done()はforループを抜けるまで呼び出されることはないよ。

    > for(var i=0;i>5;i++){
    でも、ループになってへんけどね。

    それはともかく、hoge2のなかの.done()のなかからhoge2を呼べばいいんじゃないかな。
    function hoge2(jdata, i){
     $.when(hoge()).done(function(jdata2){
      if (i > 1) {
       hoge2(jdata, i - 1);
      }
     });
    }

    hoge2(jdata, 5);
    な感じかな。
    hoge2呼び出しの前後に何かしたい場合は工夫が必要だが。
    58 : Name_Not - 2013/07/25(木) 02:21:50.61 ID:??? (+7,-29,-45)
    jqueryだとdocumentにmousemoveやmouseoverを付けてもハンドリング出来ないのは何故ですか?
    bodyに付けると出来ますが。
    素のJavaScriptの時はdocumentに付けても問題ありませんでした
    59 : Name_Not - 2013/07/25(木) 06:47:22.98 ID:??? (-6,-30,-33)
    >>51
    i<5に直すのと全てのlogに+' '+new Date().getTime()をつけてみると、
    クライアントでループ回すのよりサーバ応答に時間がかかってるのがわかるよ
    60 : 51 - 2013/07/25(木) 09:13:29.78 ID:??? (+104,+30,-192)
    >>57
    なるほど。ループが使えない?から再帰処理で回しているんですね。
    http://jsfiddle.net/HynTa/7/

    条件分岐やループを含んだ複数の入れ子構造のAjaxになるだけで、こんなにも難易度が上がるなんて思ってませんでした。ロジックが直ぐに思い浮かぶ人には脱帽です。

    正直、実際の問題はこれよりも遥かに処理が複雑なので、実装できそうにないですw
    ループ前にフラグ設置してajaxが正常に終わったらフラグ変更して、その後に設置したsetTimeoutでフラグ判定するって方法で処理を止めるのは邪道ですかね?
    62 : 51 - 2013/07/25(木) 11:44:54.06 ID:??? (+10,-7,-5)
    >>61
    divとpreタグでちまちまと構成されてるのか…凄い
    63 : Name_Not - 2013/07/25(木) 12:15:24.10 ID:??? (-1,-29,-46)
    textareaのdisplayはnoneで
    CodeMirrorクラスのdiv内で実際の表示はしてるんですね
    textareaじゃないのになんで編集できるんだろう?
    65 : Name_Not - 2013/07/25(木) 12:46:25.58 ID:??? (+113,+29,-95)
    >>60
    setTimeoutも同じ事、forループを抜けるまでは実際その時間が来たとしても割り込まれないよ。

    やりたいことが、ajax呼び出しを順番にやりたい、前の呼び出しが終わってからでないと呼び出してほしくない。
    ってことなら、再帰に似た感じのを使うしかないと思う。
    ajax処理の前後に何かしたい場合は、その部分もコールバック関数にして、用意しておく感じで。

    http://jsfiddle.net/HynTa/8/

    例えばこんな感じ。
    66 : Name_Not - 2013/07/25(木) 12:54:39.29 ID:??? (+57,+29,-85)
    ジェイクエリーの$もグローバル(あるいはそれに準じた)変数なので
    関数内で何度も呼び出す場合はローカル変数に代入した方がいいですよね?
    67 : Name_Not - 2013/07/25(木) 13:08:16.74 ID:??? (-1,-29,-40)
    jQueryの本体はグローバル変数jQuery
    68 : 51 - 2013/07/25(木) 13:26:18.29 ID:??? (+78,+29,-162)
    >>65
    setTimeoutで試行錯誤してましたw(当然ながら実現できず)

    >やりたいことが、ajax呼び出しを順番にやりたい、前の呼び出しが終わってからでないと呼び出してほしくない。
    >ってことなら、再帰に似た感じのを使うしかないと思う。
    これが聞きたかったです。
    サンプルのコードも非常に参考になりました。勉強になりました。
    本当にありがとうございました。
    $.when、$.Deferredとかでググると直ぐに色々と基本的な事や仕様は見つかりますが、
    Ajax入れ子のループや分岐の方法が見つからなかったので助かりました。
    あとは自力で頑張ってみます。
    69 : Name_Not - 2013/07/25(木) 18:23:44.15 ID:??? (-1,-30,-33)
    >>58
    この件ですが、
    $(document)と書くべきところを
    $('document')と書いていただけでした
    70 : Name_Not - 2013/07/25(木) 18:45:38.27 ID:??? (+36,+18,+0)
    バーカ
    71 : Name_Not - 2013/07/25(木) 20:28:38.75 ID:??? (+64,+30,-33)
    webアプリ内でURLを変えずに戻ったり進んだりするため、
    思わず「戻る」ボタンを押してしまうことがあります
    戻るボタンを押した時に、本当にページを離れるかを聞いて、
    いいえと答えた時には留まるようにしたいのですが、どうやればいいのでしょうか?
    72 : 51 - 2013/07/25(木) 20:41:08.65 ID:??? (+5,-29,+0)
    >>71
    onunload
    73 : Name_Not - 2013/07/25(木) 21:06:52.35 ID:??? (+91,+29,-19)
    だが、やり過ぎるとウザい。
    「ログアウトしますか?」なんかもそうだが。
    74 : Name_Not - 2013/07/25(木) 21:09:18.35 ID:??? (-1,-29,-20)
    >>72
    ありがとうございます
    unloadではうまく出来ませんでしたが、beforeunloadで出来ました
    75 : Name_Not - 2013/07/25(木) 21:09:45.04 ID:??? (+0,-28,-2)
    最近jsfiddleがそれやってて地味に使いづらい
    76 : Name_Not - 2013/07/25(木) 21:11:21.14 ID:??? (+70,+29,-3)
    >>73
    たしかにそうですね
    戻るボタンを無効に出来ればいいのですが
    77 : Name_Not - 2013/07/25(木) 21:21:08.18 ID:??? (+52,+24,-11)
    webアプリは新しいウィンドウか新しいタブかで始めたらいいんじゃね?
    78 : Name_Not - 2013/07/25(木) 21:57:34.34 ID:??? (+57,+29,+0)
    なるほど
    いいかもしれません
    ありがとうございました
    79 : Name_Not - 2013/07/26(金) 06:27:11.91 ID:??? (+29,-29,-43)
    scriptを使ったリンクボタン2つ(A,B)を置きたいのですが、
    AとBはそれぞれは単独でちゃんと動くのですが、2つ一緒に置くとAが動きません。

    質問テンプレの使い方がよく分かりませんが、とりあえず置いてみます・・・
    http://jsbin.com/acodiw/5/watch
    (上のスクリプトがwindow01.js、下のスクリプトがwindow02.jsです)

    初心者で申し訳ないのですが、よろしくお願いします・・・
    80 : Name_Not - 2013/07/26(金) 07:42:55.94 ID:??? (+51,+28,+0)
    すみません、勘違いでした。
    81 : 79 - 2013/07/26(金) 08:51:07.59 ID:??? (-7,-30,+0)
    消えてしまったので直貼り・・・

    <!DOCTYPE html>
    <html lang="ja">
    <!--■■■-->
    <head>
    <meta charset="UTF-8">
    <script type="text/javascript" src="prototype_window/scripts/prototype.js"></script>
    <script type="text/javascript" src="prototype_window/scripts/window.js"></script>
    <link href="prototype_window/css/default.css" rel="stylesheet" type="text/css"/>

    <script type="text/javascript" src="prototype_window/scripts/window01.js"></script>
    <script type="text/javascript" src="prototype_window/scripts/window02.js"></script>

    </head>
    <!--■■■-->
    <body>

    <input type="button" id="window01" onclick="openWin()" />
    <input type="button" id="window02" onclick="openWin()" />

    </body>
    </html>
    82 : 79 - 2013/07/26(金) 08:59:15.37 ID:??? (+3,-30,-212)
    ↓window01.js
    window.onload = function(){
    document.getElementById("window01").onclick = function(){
    multiWindow.open("win01", "window01", 80, 100, 320, 240);
    }
    }
    var multiWindow = {
    open : function(winID, wTitle, x, y, w, h){
    var win = new Window(winID, {
    title: wTitle, className: "dialog",
    top:y, left:x, width:w, height:h, zIndex: 100,
    resizable: true, draggable:true
    });
    win.setDestroyOnClose();
    win.show();
    win.setHTMLContent("window01だよ");
    }
    }

    window02.jsは上記の01部分を02に置換してあります。
    分かる方いたらお願いします・・・orz
    84 : Name_Not - 2013/07/26(金) 09:50:29.19 ID:??? (-28,-30,-43)
    >>79
    window.onloadが2回呼ばれる事になるから01.js(これがAかな?)が02.js(B)で上書きされている。
    jsファイルを分けるならwindow.onloadイベントは書かないか、window.onloadイベント内にAとBの処理を2つまとめて書く。
    86 : Name_Not - 2013/07/26(金) 16:00:05.09 ID:??? (+3,-28,-11)
    less.jsで変換された後のCSSを確認するのはどうやればいいんですか?
    87 : Name_Not - 2013/07/26(金) 17:07:37.26 ID:??? (+30,-29,-20)
    >>86
    Crunch(LESS専用エディター)
    http://crunchapp.net/
    88 : Name_Not - 2013/07/26(金) 17:42:10.57 ID:??? (+59,+26,+0)
    >>87
    CSSで出力できるんですね
    ありがとうございました
    89 : Name_Not - 2013/07/26(金) 20:32:09.12 ID:??? (+3,-30,-60)
    $('body').scrollTop()だとIEではスクロール位置が取得できません
    IEではbodyがdocumentElementになってるみたいで。
    jqueryでブラウザを気にせずにスクロール位置を取得するにはどうすればいいですか?
    92 : Name_Not - 2013/07/26(金) 21:38:22.86 ID:??? (+49,+22,-41)
    >>90
    ありがとうございます
    カンマは複数の要素をあらわすセレクタなので、
    html要素とbody要素の両方からscrollTopを取得するっていう意味になるんでしょうか
    片方にしか属性がない場合は分かりやすいけど、
    両方に属性があってしかも値が異なる場合はどうなるんだろう
    93 : Name_Not - 2013/07/26(金) 23:24:21.45 ID:??? (+57,+29,-3)
    どうなるんだろう。じゃねーよ。
    試せ!
    94 : Name_Not - 2013/07/26(金) 23:26:58.74 ID:??? (+3,-30,-69)
    オライリーのjQueryクックブックでは$(document)使ってますね
    $(document)もscroll操作に使えるけど
    firefoxだけは、読み込みはできるけど書き込んでも反映されない (>_<)
    jQuery使ってもこういう面倒くささがあるとは
    95 : Name_Not - 2013/07/26(金) 23:52:30.58 ID:??? (+62,+29,-45)
    firefoxだと反映しないのではなく、
    スクロールには反映してるけどスクロールバーには反映しない、でした
    ただそれもスクロール位置再現機能を阻止した場合だけそうなるようで
    基本的には$(document)でいいのかな
    96 : Name_Not - 2013/07/27(土) 00:34:45.33 ID:??? (+57,+29,-10)
    http://stackoverflow.com/questions/13040897/firefox-scrollbar-resets-incorrectly

    スクロールバーの件ですがfirefoxのバグが原因で、
    最初に0以外を書き込めば反映しました
    98 : 97 - 2013/07/27(土) 02:35:43.13 ID:??? (-2,-30,-10)
    win.setHTMLContent("window01だよ");

    win.setURL

    にするだけで直りました。お騒がせしました。
    99 : Name_Not - 2013/07/27(土) 06:16:57.06 ID:??? (+57,+29,-17)
    今日一日でJQuery マスター出来る方法教えてくれ。
    100 : Name_Not - 2013/07/27(土) 10:24:28.13 ID:??? (+34,+11,-1)
    プログラミングに王道なし。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について