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

私的良スレ書庫

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

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

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
851 : Name_Not - 2011/04/23(土) 14:45:33.96 ID:??? (-29,-30,-201)
function onButtonClick(){
sendRequest();
}
xmlhttp = new XMLHttpRequest();{
var xmlhttp;
xmlhttp.onload = function(){
document.getElementById("hantei").innerHTML=("new XMLHttpRequest()");
alert(xmlhttp.status);//hello.phpがサーバーにないと404と出る
if(xmlhttp.status== 200){//xmlhttp.statusの状態によって分けた 
processRequest(xmlhttp);}
else {processRequest2(xmlhttp);}
}
xmlhttp.open("GET", "hello.php");
xmlhttp.send(null);}
function processRequest(xmlhttp){
document.getElementById("date").innerHTML=xmlhttp.responseText;}
function processRequest2(xmlhttp){
852 : Name_Not - 2011/04/23(土) 14:46:19.09 ID:??? (-27,-30,-263)
続き

document.getElementById("date").innerHTML=("Error");}
window.onload=onButtonClick;
</script>
</head>
<body>
<div id="hantei"></div>
hello.phpの中身は<span id="date">・・・</span>です<br/>
</body>
</html>

onload関数が呼び出されるのは読み込みが完了したときなので
readystateプロパティやstatusプロパティを確認する必要がない
と本に載っていましたが、hello.phpがサーバーにないときでもonload関数
が呼び出され、xmlhttp.responseTextでnot Foundが<span id="date">・・・</span>
に表示されます。onload関数が呼び出されるのはxmlhttp.readyState == 4で
xmlhttp.status== 200のときだけでなくxmlhttp.statusがなんな値でもonload関数が呼び出さ
れるということですか?onload関数が呼び出されるのは読み込みが完了というのは
xmlhttp.statusがステータスコードを取得したときと考えていいですか?
853 : Name_Not - 2011/04/23(土) 14:48:19.04 ID:??? (-27,-30,-209)
851の訂正
function onButtonClick(){
sendRequest();
}
function sendRequest(){
xmlhttp = new XMLHttpRequest();{
var xmlhttp;
xmlhttp.onload = function(){
document.getElementById("hantei").innerHTML=("new XMLHttpRequest()");
alert(xmlhttp.status);//hello.phpがサーバーにないと404と出る
if(xmlhttp.status== 200){//xmlhttp.statusの状態によって分けた 
processRequest(xmlhttp);}
else {processRequest2(xmlhttp);}
}
xmlhttp.open("GET", "hello.php");
xmlhttp.send(null);}
}
function processRequest(xmlhttp){
document.getElementById("date").innerHTML=xmlhttp.responseText;}
function processRequest2(xmlhttp){
855 : Name_Not - 2011/04/23(土) 16:25:57.20 ID:??? (+27,+29,-3)
彼の疑問に回答してもレスはありません
858 : Name_Not - 2011/04/23(土) 19:13:40.22 ID:??? (+22,+29,-1)
巻き上げられるから
867 : Name_Not - 2011/04/23(土) 21:21:30.64 ID:vWUGB5na (-29,+29,-4)
>>864
うん。>>861を位置行削っただけだから
868 : Name_Not - 2011/04/23(土) 21:29:26.04 ID:??? (+17,+28,-16)
>>861のとおりなら>>862もundefinedが返る気がするんだが
869 : 忍法帖【Lv= - 2011/04/23(土) 21:32:39.25 ID:??? (+30,+29,-51)
ボタンを押すとあらかじめ決められた単語から3つランダムで出力するものを作りたいです
例えば「あ」~「ん」の51音からランダムで3つ出力して「し」「ま」「え」など
ボタンを押すたびにランダム出力するものを作りたいのですが教えていただけないでしょうか
871 : Name_Not - 2011/04/23(土) 21:38:58.54 ID:??? (-27,-29,-14)
>>869
配列に単語を格納してMath.randomで要素を特定する。
873 : Name_Not - 2011/04/23(土) 21:43:38.20 ID:vWUGB5na (-29,+29,-2)
>>870
超わかりやすいですありがとう
あと>>857置き去りでごめんなさい
874 : 857 - 2011/04/23(土) 21:59:07.13 ID:??? (+27,+29,-6)
振り返ると、そこにはスリップストリームに入っている俺の姿が

理解したありがとう
876 : Name_Not - 2011/04/23(土) 23:56:46.31 ID:??? (+24,+26,-6)
なぜって関数作って実行してるだけじゃない
877 : Name_Not - 2011/04/24(日) 00:01:53.59 ID:??? (-21,-30,-191)
>>875
JavaScriptではグローバルスコープから変数にアクセスできないようにする(つまりグローバルを汚染しない)には関数スコープを作らなければならない
ある処理をまとめて関数スコープに入れるのに即時関数、無名関数、クロージャとも呼ばれる「(function() {})();」というので囲む
「(function() {})();」の代わりに「(function() {}());」でもいいし「+function() {}();」などでも良い

昔のFirefoxのGreasemonkeyやOperaのUserJS用にUser Scriptを書く時によく使われてるよ
878 : Name_Not - 2011/04/24(日) 00:40:18.82 ID:??? (-27,-30,-102)
>>875
名前をつけるまでもない関数を無名関数、匿名関数と呼ぶ。
グローバル名前空間を汚さない為に使われることが多いが、クロージャを理解するとそれだけがメリットではないことを理解できると思う。

[JavaScript] 猿でもわかるクロージャ超入門 3 無名関数 - DQNEO起業日記
http://dqn.sakusakutto.jp/2009/01/javascript_2.html
JavaScript のブロックスコープと名前空間 « Mozilla Developer Street (modest)
http://dev.mozilla.jp/2010/05/js-blockscope-and-namespace/
881 : Name_Not - 2011/04/24(日) 02:12:57.50 ID:??? (+26,+28,-39)
使うなじゃなくあんま使うな、なんじゃないの
cssの独自プロパティもそんなこと書いてあったと思う
882 : Name_Not - 2011/04/24(日) 02:21:38.05 ID:??? (+41,+29,-46)
ここの、メモリ効率を考慮する あたりかな。無名関数でも当てはまるかどうかはシラネ

http://developer.mozilla.org/ja/Core_JavaScript_1.5_Reference/Functions
> このように効率が悪いので、可能な限りクロージャを避けてください。
> すなわち、可能な限り関数を入れ子にするのは避けてください。
883 : Name_Not - 2011/04/24(日) 02:50:43.70 ID:??? (+33,+30,-157)
>>879
>>882
自分も理解しきれていない部分があるが
厳密に言えば「即時関数=クロージャ」ではないらしいよ
まぁ即時関数をクロージャと呼ぶ人もいるからそこら辺は曖昧なんだけど…

「関数の中に定義した内部関数が外側の関数(エンクロージャ)のローカル変数を参照できる仕組みをクロージャと呼んでいます(正確にはもっと小難しい説明になるのですが,JavaScriptではそれだけのことです)。」
http://gihyo.jp/dev/serial/01/crossbrowser-javascript/0005

だから関数ネストは非効率なのかもしれないけど
即時関数の使用は良いんじゃないの
どのみちletがクロスブラウザで使用できない限り
ローカルスコープの生成にはそれぐらいしか方法が無いみたいなんだから
884 : Name_Not - 2011/04/24(日) 03:17:24.67 ID:??? (+43,+29,-129)
>>882
ほんとだ、書いてある。でも…

> この場合、inside のクロージャは result に保管されています。

って書いてあるけど、なんで?
直前のコードでresultには数値8が入っているだろ。

いや、ちょっとコードを変えればresultにクロージャが入るし、それが入ればメモリ効率が悪いっていう結論も理解できるよ。
でも、これはなんらかのミスだよね?
オレ、何か勘違いしている?
885 : Name_Not - 2011/04/24(日) 03:25:33.41 ID:??? (+33,+29,-8)
>>884
そういうときは英語版を見るんだ
そっちだとちゃんとしたサンプルになってる
886 : Name_Not - 2011/04/24(日) 03:55:37.16 ID:??? (+32,+29,-42)
クロージャの解説の方にはこうあります
http://developer.mozilla.org/ja/Core_JavaScript_1.5_Guide/Working_with_Closures
>クロージャが必要とされていないのにいたずらに関数を他の関数の中に作成するのは、
>スクリプトのパフォーマンスに悪影響を及ぼすのであまり賢いやり方ではありません。

まあ必要な時に使えばいいんじゃないでしょうか
888 : 875 - 2011/04/24(日) 05:40:32.56 ID:??? (+25,+29,-29)
>>877-886
この流れと、参考 URL でちょっとだけ理解できた気がする。

クロージャって、使いようによってはオブジェクトみたいに使えるのね。
てゆか、そのもの?

890 : Name_Not - 2011/04/24(日) 15:42:12.58 ID:Obgl/h6o (+37,+29,-163)
ものすごく初心者な内容の質問なんですが
初心者スレが見当たらないので
じゃっかんスレ違いかもしれませんが、こちらで質問させてください。

http://amenti.usamimi.info/treemenu.html
↑このサイトにあるような感じの
メニュー項目をクリックするとサブメニューがスライドして現れるような
折りたたみ式のメニューを作りたいのですが、うまくできません。
クリックしてもサブメニューが出てきません。
ちなみに自分が作ってるのはこれです。↓
http://nightlykioku.nobody.jp/JavaScript_menu_test.html

たぶん、if関数を使って、CSSのスタイルのdisplayの値を切り替える感じだと思うのですが
どこが間違ってるのか、色々ググって調べたのですが、もう自分の力では分かりません。
お手上げです降参です(´;ω;`)

心優しいJavaScripterの方々、どうかお力を貸してください。
よろしくお願いします。
あ、サイト内容については何も言わないで下さい(´・ω・`)
あくまで、JavaScriptの質問なんです!
891 : Name_Not - 2011/04/24(日) 16:17:13.68 ID:??? (+12,+11,-6)
質問するなら、問題が発生する箇所の最小限のソースを書けよ。
892 : Name_Not - 2011/04/24(日) 16:21:44.00 ID:??? (-19,-30,-103)
>>890
× SubMenu(kakonikki_list)
○ SubMenu('kakonikki_list')

"kakonikki_list"はgetElementByIdの引数にする文字列。
これで一歩は前進する。
893 : 890 - 2011/04/24(日) 19:19:29.74 ID:??? (+32,+29,-41)
>>891
すみませんでした

>>892
すげーーー!!!神ですか?
さすが心優しいJavaScripterは格が違った。
シングルクォーテーションで囲んだら、ちゃんと動作するようになりました!
ありがとうございました!助かりました!
894 : Name_Not - 2011/04/24(日) 19:38:44.67 ID:??? (+31,+29,-37)
もっと、何か、こう、さ。
ドーパミンが脳内にじょぼじょぼ溢れ出る様な質問来ないかなぁ。
895 : Name_Not - 2011/04/24(日) 19:40:36.39 ID:??? (-18,-15,-17)
JQueryって使えますか?
896 : Name_Not - 2011/04/24(日) 20:08:27.93 ID:??? (+22,+29,-4)
あなたは神を信じますか?
897 : Name_Not - 2011/04/24(日) 20:10:26.22 ID:??? (+20,+28,+0)
どぱー
898 : Name_Not - 2011/04/24(日) 20:26:14.33 ID:??? (+34,+29,-76)
>>894
WebGLでオレの嫁を表示する方法を教えてください。

>>895
オレは好き。
jQuery以外にも選択肢はあるけど(はず)、この手のライブラリのどれかを使わずにクロスブラウザサイトをつくろうなんて、面倒くさすぎる。
900 : Name_Not - 2011/04/24(日) 20:34:30.92 ID:??? (-28,-29,-31)
JQuery とhtml5.js で最強ですか?
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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