- ベストアンサー
JavaScriptで値の取得方法とは?
- JavaScriptの値の取得方法について教えてください。
- 外部で得た値をJavaScriptで取得する方法を教えてください。
- 特定の要素やオブジェクトのプロパティをJavaScriptで取得する方法を教えてください。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
function func(){ var val; request.res=function(){val=response;} return val; } これだと、undefinedしか帰りませんよ。 request.resが実行されていません。 function func(){ var val; request.res=function(){val=response;} request.res(); return val; } こういうことなんでしょうか? 例1 var target; ・・・ request.onreadystatechange=function(){ if(request.readyState==4 && request.status==200){ //target=request.responseText;みたいなことをしたい } } alert(target); ↑このalert(target); で、request.responseText の値を表示したい、というような希望でしょうか。 上記の例なら、同期通信を使用すれば、ちゃんと表示されます。 非同期通信なら、無理です。 素直に、 var target; ・・・ request.onreadystatechange=function(){ if(request.readyState==4 && request.status==200){ //target=request.responseText;みたいなことをしたい alert(target); } } とするしか方法はありません。 例2 var width,height; ・・・ image.onload=function(){ //width=image.width; height=image.height;みたいなことをしたい } 以降の処理! この場合、onloadの実行が終わるまで、以降の処理!を実行したくないのなら、以降の処理!をimage.onload内に入れるか、関数にして、function abc(){以降の処理!} 、 image.onload 内に、abc(width,height); 等として、引数を渡したりして、対応して下さい。
その他の回答 (5)
- Gotthold
- ベストアンサー率47% (396/832)
> 値が入るまで待機する方法ってないんでしょうか? だったら、コールバック関数の中に書けばいいだけです。 値が入るタイミング(イベントが発生するタイミング)=コールバック関数が呼ばれるタイミングなのですから。 var val: ○.○=function(){ ここで得た値をvalに入れたい alert(val);←やりたい処理を書く func(); ←関数にしたければ、その関数をここで呼び出してください。 その場合valは引数で渡した方が良いとは思いますが。 }
お礼
回答ありがとうございます
補足
やはり中に書くか、中から外部関数に引っ張り出す方法ですね・・・ 再帰処理から呼出しているのでreturnできないとまずいので 同期処理にすることにしました。 じゃあはじめからそうしろよと怒られそうですがw いちおう心の中でずっと疑問におもっていましたので。 2回も回答いただきありがとうございました。
- Gotthold
- ベストアンサー率47% (396/832)
> var val: > ○.○=function(){ここで得た値をvalに入れたい} > alert(val);←これがぬけていました。 当たり前の話ですが、functionが実行された後でないと valは未定義のままですよ。 本当にその通り書いたなら、alert実行時点ではfunctionはまだ実行されていません。
お礼
回答ありがとうございます
補足
ですよねー 値が入るまで待機する方法ってないんでしょうか? (それがfunction内ってことなんでしょうけれどw) function func(){ var val; request.res=function(){val=response;} return val; } みたいな形が理想です。 何件か勉強のために作っているプログラムがあるのですが 全部この部分で保留になっている状態です それと調べるためのキーワードもよくわかっていません コールバック関数?でいいのでしょうか?
- hideishi
- ベストアンサー率55% (5/9)
<HTML> <HEAD> <TITLE></TITLE> <SCRIPT language="JavaScript"> <!-- var wk_global = "abcde"; function testfunc(){ alert("testfunc:wk_global= " + wk_global); wk_global="wxyz"; testfunc2(); } function testfunc2(){ alert("testfunc2:wk_global= " + wk_global); } //--> </SCRIPT> </HEAD> <BODY> <FORM> <INPUT type="button" value="クリックしてね!" onClick="testfunc()"> </FORM> </BODY> </HTML> 関数の外側で定義した変数(wk_global)は、すべての関数から参照可能です。
お礼
回答ありがとうございます。 回答いただいたものに関してはとりあえず理解してるつもりです。 No.2さんの言われてることが近いです。
- H240S18B73
- ベストアンサー率65% (190/288)
ファイル読み込みの結果をすぐに利用したいという いつもの初心者によくある質問ってことでいいですか? ファイル読み込みの結果を利用するなら ちゃんとファイル読み込み待たないといけません bodyの読み込み終わったってイベントは つまり使ってる画像も全部読み込まれたってことなので bodyのonloadのリスナーでファイル読み込み結果を利用する処理をすれば あとから動的に読み込んでるんでない限りは大丈夫なはずです
お礼
回答ありがとうございます
補足
var val: ○.○=function(){ここで得た値をvalに入れたい} alert(val);←これがぬけていました。 できると思うのですが・・・できないんですよねー
- askaaska
- ベストアンサー率35% (1455/4149)
いまいち何がしたいのか良くわからないけど そのコメントをはずせば普通に代入されると思うけど?
お礼
回答ありがとうございます。
補足
質問の仕方がまずかったですね・・・ function内で代入したあと function外で使いたい っていうのを書き忘れてました。
お礼
回答ありがとうございます
補足
同期通信ですか・・・ そちらの方向でやることにします