私的良スレ書庫
不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitterでログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。
元スレ+ JavaScript の質問用スレッド vol.107 +
JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニューみんなの評価 :
レスフィルター : (試験中)
jQueryの$.when内でfor文を使うことはできないのでしょうか?
$.whenを使って複数のAjax処理を引数を保持しながら行いたいのです。
$.whenは並列処理とありますが、直列で同期処理を行えますよね?
ご教示願います。
http://jsfiddle.net/HynTa/2/
$.whenを使って複数のAjax処理を引数を保持しながら行いたいのです。
$.whenは並列処理とありますが、直列で同期処理を行えますよね?
ご教示願います。
http://jsfiddle.net/HynTa/2/
あら。でもやっぱ期待した結果と違うわ。
hoge2が呼ばれた時点でhoge2の中の$.whenのdoneを実行したいんです。
つまり、console.log(jdata2.user.company);が毎回呼ばれるのが期待動作なのですが、
実行結果を見ると、console.log(jdata2.user.company);が最後にまとめて実行されています。
これをどうにかしたいです。要はやりたい事は
$.when~done($.when~done($.when~done())).....
みたいな事です。最初のajaxの返り値を以降の$.when~doneで利用したいのです。
その際にはループ処理もあるので、同期を取りたいです。
hoge2が呼ばれた時点でhoge2の中の$.whenのdoneを実行したいんです。
つまり、console.log(jdata2.user.company);が毎回呼ばれるのが期待動作なのですが、
実行結果を見ると、console.log(jdata2.user.company);が最後にまとめて実行されています。
これをどうにかしたいです。要はやりたい事は
$.when~done($.when~done($.when~done())).....
みたいな事です。最初のajaxの返り値を以降の$.when~doneで利用したいのです。
その際にはループ処理もあるので、同期を取りたいです。
>>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呼び出しの前後に何かしたい場合は工夫が必要だが。
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呼び出しの前後に何かしたい場合は工夫が必要だが。
jqueryだとdocumentにmousemoveやmouseoverを付けてもハンドリング出来ないのは何故ですか?
bodyに付けると出来ますが。
素のJavaScriptの時はdocumentに付けても問題ありませんでした
bodyに付けると出来ますが。
素のJavaScriptの時はdocumentに付けても問題ありませんでした
>>57
なるほど。ループが使えない?から再帰処理で回しているんですね。
http://jsfiddle.net/HynTa/7/
条件分岐やループを含んだ複数の入れ子構造のAjaxになるだけで、こんなにも難易度が上がるなんて思ってませんでした。ロジックが直ぐに思い浮かぶ人には脱帽です。
正直、実際の問題はこれよりも遥かに処理が複雑なので、実装できそうにないですw
ループ前にフラグ設置してajaxが正常に終わったらフラグ変更して、その後に設置したsetTimeoutでフラグ判定するって方法で処理を止めるのは邪道ですかね?
なるほど。ループが使えない?から再帰処理で回しているんですね。
http://jsfiddle.net/HynTa/7/
条件分岐やループを含んだ複数の入れ子構造のAjaxになるだけで、こんなにも難易度が上がるなんて思ってませんでした。ロジックが直ぐに思い浮かぶ人には脱帽です。
正直、実際の問題はこれよりも遥かに処理が複雑なので、実装できそうにないですw
ループ前にフラグ設置してajaxが正常に終わったらフラグ変更して、その後に設置したsetTimeoutでフラグ判定するって方法で処理を止めるのは邪道ですかね?
textareaのdisplayはnoneで
CodeMirrorクラスのdiv内で実際の表示はしてるんですね
textareaじゃないのになんで編集できるんだろう?
CodeMirrorクラスのdiv内で実際の表示はしてるんですね
textareaじゃないのになんで編集できるんだろう?
>>60
setTimeoutも同じ事、forループを抜けるまでは実際その時間が来たとしても割り込まれないよ。
やりたいことが、ajax呼び出しを順番にやりたい、前の呼び出しが終わってからでないと呼び出してほしくない。
ってことなら、再帰に似た感じのを使うしかないと思う。
ajax処理の前後に何かしたい場合は、その部分もコールバック関数にして、用意しておく感じで。
http://jsfiddle.net/HynTa/8/
例えばこんな感じ。
setTimeoutも同じ事、forループを抜けるまでは実際その時間が来たとしても割り込まれないよ。
やりたいことが、ajax呼び出しを順番にやりたい、前の呼び出しが終わってからでないと呼び出してほしくない。
ってことなら、再帰に似た感じのを使うしかないと思う。
ajax処理の前後に何かしたい場合は、その部分もコールバック関数にして、用意しておく感じで。
http://jsfiddle.net/HynTa/8/
例えばこんな感じ。
ジェイクエリーの$もグローバル(あるいはそれに準じた)変数なので
関数内で何度も呼び出す場合はローカル変数に代入した方がいいですよね?
関数内で何度も呼び出す場合はローカル変数に代入した方がいいですよね?
>>65
setTimeoutで試行錯誤してましたw(当然ながら実現できず)
>やりたいことが、ajax呼び出しを順番にやりたい、前の呼び出しが終わってからでないと呼び出してほしくない。
>ってことなら、再帰に似た感じのを使うしかないと思う。
これが聞きたかったです。
サンプルのコードも非常に参考になりました。勉強になりました。
本当にありがとうございました。
$.when、$.Deferredとかでググると直ぐに色々と基本的な事や仕様は見つかりますが、
Ajax入れ子のループや分岐の方法が見つからなかったので助かりました。
あとは自力で頑張ってみます。
setTimeoutで試行錯誤してましたw(当然ながら実現できず)
>やりたいことが、ajax呼び出しを順番にやりたい、前の呼び出しが終わってからでないと呼び出してほしくない。
>ってことなら、再帰に似た感じのを使うしかないと思う。
これが聞きたかったです。
サンプルのコードも非常に参考になりました。勉強になりました。
本当にありがとうございました。
$.when、$.Deferredとかでググると直ぐに色々と基本的な事や仕様は見つかりますが、
Ajax入れ子のループや分岐の方法が見つからなかったので助かりました。
あとは自力で頑張ってみます。
webアプリ内でURLを変えずに戻ったり進んだりするため、
思わず「戻る」ボタンを押してしまうことがあります
戻るボタンを押した時に、本当にページを離れるかを聞いて、
いいえと答えた時には留まるようにしたいのですが、どうやればいいのでしょうか?
思わず「戻る」ボタンを押してしまうことがあります
戻るボタンを押した時に、本当にページを離れるかを聞いて、
いいえと答えた時には留まるようにしたいのですが、どうやればいいのでしょうか?
scriptを使ったリンクボタン2つ(A,B)を置きたいのですが、
AとBはそれぞれは単独でちゃんと動くのですが、2つ一緒に置くとAが動きません。
質問テンプレの使い方がよく分かりませんが、とりあえず置いてみます・・・
http://jsbin.com/acodiw/5/watch
(上のスクリプトがwindow01.js、下のスクリプトがwindow02.jsです)
初心者で申し訳ないのですが、よろしくお願いします・・・
AとBはそれぞれは単独でちゃんと動くのですが、2つ一緒に置くとAが動きません。
質問テンプレの使い方がよく分かりませんが、とりあえず置いてみます・・・
http://jsbin.com/acodiw/5/watch
(上のスクリプトがwindow01.js、下のスクリプトがwindow02.jsです)
初心者で申し訳ないのですが、よろしくお願いします・・・
消えてしまったので直貼り・・・
<!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>
<!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>
↓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
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
>>79
window.onloadが2回呼ばれる事になるから01.js(これがAかな?)が02.js(B)で上書きされている。
jsファイルを分けるならwindow.onloadイベントは書かないか、window.onloadイベント内にAとBの処理を2つまとめて書く。
window.onloadが2回呼ばれる事になるから01.js(これがAかな?)が02.js(B)で上書きされている。
jsファイルを分けるならwindow.onloadイベントは書かないか、window.onloadイベント内にAとBの処理を2つまとめて書く。
$('body').scrollTop()だとIEではスクロール位置が取得できません
IEではbodyがdocumentElementになってるみたいで。
jqueryでブラウザを気にせずにスクロール位置を取得するにはどうすればいいですか?
IEではbodyがdocumentElementになってるみたいで。
jqueryでブラウザを気にせずにスクロール位置を取得するにはどうすればいいですか?
>>90
ありがとうございます
カンマは複数の要素をあらわすセレクタなので、
html要素とbody要素の両方からscrollTopを取得するっていう意味になるんでしょうか
片方にしか属性がない場合は分かりやすいけど、
両方に属性があってしかも値が異なる場合はどうなるんだろう
ありがとうございます
カンマは複数の要素をあらわすセレクタなので、
html要素とbody要素の両方からscrollTopを取得するっていう意味になるんでしょうか
片方にしか属性がない場合は分かりやすいけど、
両方に属性があってしかも値が異なる場合はどうなるんだろう
オライリーのjQueryクックブックでは$(document)使ってますね
$(document)もscroll操作に使えるけど
firefoxだけは、読み込みはできるけど書き込んでも反映されない (>_<)
jQuery使ってもこういう面倒くささがあるとは
$(document)もscroll操作に使えるけど
firefoxだけは、読み込みはできるけど書き込んでも反映されない (>_<)
jQuery使ってもこういう面倒くささがあるとは
firefoxだと反映しないのではなく、
スクロールには反映してるけどスクロールバーには反映しない、でした
ただそれもスクロール位置再現機能を阻止した場合だけそうなるようで
基本的には$(document)でいいのかな
スクロールには反映してるけどスクロールバーには反映しない、でした
ただそれもスクロール位置再現機能を阻止した場合だけそうなるようで
基本的には$(document)でいいのかな
http://stackoverflow.com/questions/13040897/firefox-scrollbar-resets-incorrectly
スクロールバーの件ですがfirefoxのバグが原因で、
最初に0以外を書き込めば反映しました
スクロールバーの件ですがfirefoxのバグが原因で、
最初に0以外を書き込めば反映しました
win.setHTMLContent("window01だよ");
を
win.setURL
にするだけで直りました。お騒がせしました。
を
win.setURL
にするだけで直りました。お騒がせしました。
前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
みんなの評価 : 類似してるかもしれないスレッド
- + JavaScript の質問用スレッド vol.127 + (1001) - [97%] - 2016/2/4 0:15
- + JavaScript の質問用スレッド vol.106 + (1001) - [97%] - 2013/7/20 9:30
- + JavaScript の質問用スレッド vol.117 + (1009) - [97%] - 2014/8/5 3:30
- + JavaScript の質問用スレッド vol.127 + (160) - [97%] - 2021/7/16 9:30
- + JavaScript の質問用スレッド vol.137 + (1003) - [97%] - 2019/3/26 11:46
- + JavaScript の質問用スレッド vol.108 + (1001) - [97%] - 2013/9/21 15:16
- + JavaScript の質問用スレッド vol.109 + (1001) - [97%] - 2013/10/7 13:16
- + JavaScript の質問用スレッド vol.105 + (1001) - [97%] - 2013/5/20 4:45
- + JavaScript の質問用スレッド vol.104 + (1001) - [97%] - 2013/1/28 4:00
- + JavaScript の質問用スレッド vol.103 + (1001) - [97%] - 2012/11/9 15:30
- + JavaScript の質問用スレッド vol.102 + (1001) - [97%] - 2012/9/11 17:30
- + JavaScript の質問用スレッド vol.101 + (1001) - [97%] - 2012/7/16 14:15
- + JavaScript の質問用スレッド vol.100 + (1001) - [97%] - 2012/6/13 22:46
- + JavaScript の質問用スレッド vol.121 + (1001) - [95%] - 2022/11/29 16:30
- + JavaScript の質問用スレッド vol.126 + (952) - [95%] - 2015/11/18 13:15
- + JavaScript の質問用スレッド vol.126 + (348) - [95%] - 2023/1/12 17:00
- + JavaScript の質問用スレッド vol.125 + (1001) - [95%] - 2015/10/7 17:45
トップメニューへ / →のくす牧場書庫について