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

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

    JavaScript覧 / PC版 /
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    51 :

    jQueryの$.when内でfor文を使うことはできないのでしょうか?
    $.whenを使って複数のAjax処理を引数を保持しながら行いたいのです。
    $.whenは並列処理とありますが、直列で同期処理を行えますよね?
    ご教示願います。
    http://jsfiddle.net/HynTa/2/

    52 = :

    i<5

    53 = :

    >>52
    thx.
    たまには早く帰って寝るわ。

    54 = :

    あら。でもやっぱ期待した結果と違うわ。
    hoge2が呼ばれた時点でhoge2の中の$.whenのdoneを実行したいんです。

    つまり、console.log(jdata2.user.company);が毎回呼ばれるのが期待動作なのですが、
    実行結果を見ると、console.log(jdata2.user.company);が最後にまとめて実行されています。
    これをどうにかしたいです。要はやりたい事は
    $.when~done($.when~done($.when~done())).....
    みたいな事です。最初のajaxの返り値を以降の$.when~doneで利用したいのです。
    その際にはループ処理もあるので、同期を取りたいです。

    57 = :

    >>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 = :

    jqueryだとdocumentにmousemoveやmouseoverを付けてもハンドリング出来ないのは何故ですか?
    bodyに付けると出来ますが。
    素のJavaScriptの時はdocumentに付けても問題ありませんでした

    60 = :

    >>57
    なるほど。ループが使えない?から再帰処理で回しているんですね。
    http://jsfiddle.net/HynTa/7/

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

    正直、実際の問題はこれよりも遥かに処理が複雑なので、実装できそうにないですw
    ループ前にフラグ設置してajaxが正常に終わったらフラグ変更して、その後に設置したsetTimeoutでフラグ判定するって方法で処理を止めるのは邪道ですかね?

    62 = :

    >>61
    divとpreタグでちまちまと構成されてるのか…凄い

    65 = :

    >>60
    setTimeoutも同じ事、forループを抜けるまでは実際その時間が来たとしても割り込まれないよ。

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

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

    例えばこんな感じ。

    66 = :

    ジェイクエリーの$もグローバル(あるいはそれに準じた)変数なので
    関数内で何度も呼び出す場合はローカル変数に代入した方がいいですよね?

    68 = :

    >>65
    setTimeoutで試行錯誤してましたw(当然ながら実現できず)

    >やりたいことが、ajax呼び出しを順番にやりたい、前の呼び出しが終わってからでないと呼び出してほしくない。
    >ってことなら、再帰に似た感じのを使うしかないと思う。
    これが聞きたかったです。
    サンプルのコードも非常に参考になりました。勉強になりました。
    本当にありがとうございました。
    $.when、$.Deferredとかでググると直ぐに色々と基本的な事や仕様は見つかりますが、
    Ajax入れ子のループや分岐の方法が見つからなかったので助かりました。
    あとは自力で頑張ってみます。

    70 = :

    バーカ

    71 = :

    webアプリ内でURLを変えずに戻ったり進んだりするため、
    思わず「戻る」ボタンを押してしまうことがあります
    戻るボタンを押した時に、本当にページを離れるかを聞いて、
    いいえと答えた時には留まるようにしたいのですが、どうやればいいのでしょうか?

    72 = :

    >>71
    onunload

    73 = :

    だが、やり過ぎるとウザい。
    「ログアウトしますか?」なんかもそうだが。

    76 = :

    >>73
    たしかにそうですね
    戻るボタンを無効に出来ればいいのですが

    77 = :

    webアプリは新しいウィンドウか新しいタブかで始めたらいいんじゃね?

    78 = :

    なるほど
    いいかもしれません
    ありがとうございました

    79 = :

    scriptを使ったリンクボタン2つ(A,B)を置きたいのですが、
    AとBはそれぞれは単独でちゃんと動くのですが、2つ一緒に置くとAが動きません。

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

    初心者で申し訳ないのですが、よろしくお願いします・・・

    80 = :

    すみません、勘違いでした。

    82 = :

    ↓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

    86 = :

    less.jsで変換された後のCSSを確認するのはどうやればいいんですか?

    87 = :

    >>86
    Crunch(LESS専用エディター)
    http://crunchapp.net/

    88 = :

    >>87
    CSSで出力できるんですね
    ありがとうございました

    89 = :

    $('body').scrollTop()だとIEではスクロール位置が取得できません
    IEではbodyがdocumentElementになってるみたいで。
    jqueryでブラウザを気にせずにスクロール位置を取得するにはどうすればいいですか?

    92 = :

    >>90
    ありがとうございます
    カンマは複数の要素をあらわすセレクタなので、
    html要素とbody要素の両方からscrollTopを取得するっていう意味になるんでしょうか
    片方にしか属性がない場合は分かりやすいけど、
    両方に属性があってしかも値が異なる場合はどうなるんだろう

    93 = :

    どうなるんだろう。じゃねーよ。
    試せ!

    94 = :

    オライリーのjQueryクックブックでは$(document)使ってますね
    $(document)もscroll操作に使えるけど
    firefoxだけは、読み込みはできるけど書き込んでも反映されない (>_<)
    jQuery使ってもこういう面倒くささがあるとは

    95 = :

    firefoxだと反映しないのではなく、
    スクロールには反映してるけどスクロールバーには反映しない、でした
    ただそれもスクロール位置再現機能を阻止した場合だけそうなるようで
    基本的には$(document)でいいのかな

    96 = :

    http://stackoverflow.com/questions/13040897/firefox-scrollbar-resets-incorrectly

    スクロールバーの件ですがfirefoxのバグが原因で、
    最初に0以外を書き込めば反映しました

    99 = :

    今日一日でJQuery マスター出来る方法教えてくれ。

    100 = :

    プログラミングに王道なし。


    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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