1: Name_Not_Found 投稿日:2012/09/08(土) 12:01:42.11
JavaScript を自ら学ぶ人のための質問スレッドです。
2-4のテンプレを読んだ上で質問してください。

■質問を書く上で
(1) 煽り、コード制作依頼等、人を不快にさせる投稿はご遠慮下さい。公序良俗を守った応対を心がけてください。
(2) 他の人に迷惑をかけるスクリプトの質問はご遠慮ください。
  (ブラクラ、[戻る], [閉じる], [クリック] の妨害、画面占有など)
(3) 質問者及び議論を行う人はメール欄を空欄にし、名前にレス番を入れることを強く推奨します。(なりすまし及び煽り防止のため)
(4) 常に自発的に調べる心構えを持ってください。
  具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。
  わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。
(5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。
(6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。
  ※必ず「問題の事象が再現されること」を確認してください。
   必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。
(7) サンプルコードに HTML が含まれる場合は http://validator.w3.org/ で [Check] してみてください。
(8) 質問を具体的かつ詳細に書くと回答を得られやすいです。質問テンプレートを活用してみてください。

■質問テンプレート
【環境】OS, ブラウザをバージョンと共に記入してください。(ex: IE8, Firefox4)
【何をしたのか】何をしたら問題の現象が発生するのか。再現手順を具体的に書いてください。
【エラーメッセージ】エラーメッセージがあれば正確に書き写してください。(Windows なら「コピット」を活用)
【期待する結果】最終的にどういう結果を望んでいるのか、を書いてください。
【サンプルコード】現象を再現可能な最小限のコードを書いてください。
 1レスに収まらないならコード投稿サイトを利用してください。
 http://jsdo.it/ http://jsbin.com/ http://jsfiddle.net/ http://ideone.com/

引用元: + JavaScript の質問用スレッド vol.103 +
http://toro.2ch.net/test/read.cgi/hp/1347073302/

3: Name_Not_Found 投稿日:2012/09/08(土) 12:03:25.36
■主要FAQ (全部は http://fiddle.jshell.net/vSqKr/33/show/ )
Q1. 別窓・フレーム内容やローカルファイルを読み書きしたいのですが…
A1. 別サーバのページやファイルの内容はセキュリティ制約でアクセス不可です。
Q2. document.write()でページ内容を追加したいのですが…
A2. 一度表示完了後にwriteするとページ内容が消去されます。DOM等別手段を。
Q3. table内容のinnerHTMLやDOMでの変更がうまく行かないのですが…
A3. IEではtable/tbody/trのinnerHTML書き換え不可です。DOMを使いますが、
  DOMの場合tableの直下にはtbody要素が(作らなくても)あることに注意。
Q4. フォーム部品名を変数にした「...myform.変数名.value」が動きません…
A4. 「document.forms.myform.elements[変数名].value」でどぞ。
  JavaScriptでは一般に「obj.x」と「obj['x']」は同じ意味です。
  グローバル変数はwindowのプロパティなので「x」と「window['x']」も。
Q5. CSSで設定した背景色がe.style.backgroundColorで取得できないのですが…
A5. 取得には document.defaultView.getComputedStyle() を使う必要あり。
  IEでは要素オブジェクトのプロパティcurrentStyleを使う。
Q6. setAttribute("class","foo")、setAttribute("onclick","bar()")が動きません…
A6. IEではそれは不可。「obj.className="foo"」「obj.onclick=bar」でどぞ。
Q7. タイマーやイベントハンドラに設定するコードにthisを含めたいのですが
  「"...this..."」とか「function(){...this...}」ではうまく行きません。
A7. 実行時にthisが別のものを指してしまってる。以下のようにthisを束縛保存。
  「function(x){return function(){...x...};}(this)」
Q8. input type="file"の値を設定(参照)できないのですが…
A8. セキュリティ制約のため設定は絶対に不可。参照はブラウザにより不可。
Q9. getElementById('ID名')や$('ID名')で要素が取れないのですが…
A9. コード実行時点でHTMLがそこまで読まれてない。window.onload 中でやるとか。

4: Name_Not_Found 投稿日:2012/09/08(土) 12:04:14.73

13: Name_Not_Found 投稿日:2012/09/11(火) 16:04:05.95
ある数が2の何乗かを調べるのってどうやるん?

14: Name_Not_Found 投稿日:2012/09/11(火) 16:08:48.73
>>13
2で何回割れるかをカウントする
64ビット整数であることを前提にするなら表を作ってもたった64エントリで済むという

20: Name_Not_Found 投稿日:2012/09/12(水) 02:48:52.93
ajaxってさ、文字コードはutf8nかutf8かどっちのほうがいいの?

21: Name_Not_Found 投稿日:2012/09/12(水) 09:27:45.77
Web関連って今は、文字コード無指定だったら
暗黙裡にUTF-8とするんだったと思う。

27: Name_Not_Found 投稿日:2012/09/12(水) 15:21:25.55 ID:NysFQoO/
質問です。
「解説して ○年○日 経過」
というカウントアップなのですが、うるう年対策の方法がわかりません。
どうかアドバイスをお願い致します。

var now = new Date();
var xxday = new Date(2012, 9-1, 12);
var count2 = Math.ceil( (now.getTime() - xxday.getTime()) / (24*60*60*1000) );
var y = Math.floor(count2 / 365);
var d = count2 % 365;
document.write("開設して");
if (y > 0) {
document.write(y);
document.write("年");
}
if (d > 0) {
document.write(d);
document.write("日");
}
document.write("経過");

28: Name_Not_Found 投稿日:2012/09/12(水) 18:12:03.99
var now = new Date();
var xxday = new Date(2012, 9-1, 12);
var xxday2 = new Date(now.getFullYear(), xxday.getMonth(), xxday.getDate()); // 今年のXデー
var y = now.getFullYear() - xxday.getFullYear();
if (now.getTime() - xxday2.getTime() < 0) { // 今年まだXデーを迎えていないなら、改めてxxday2を去年のXデーに設定
xxday2 = new Date(now.getFullYear() - 1, xxday.getMonth(), xxday.getDate());
y--;
}
var d = Math.floor((now.getTime() - xxday2.getTime()) / (24*60*60*1000));
document.write("開設して");
if (y > 0) {
document.write(y);
document.write("年");
}
if (d > 0) {
document.write(d);
document.write("日");
}
document.write("経過");
}

29: Name_Not_Found 投稿日:2012/09/12(水) 18:53:27.80
Xデーが 2/29 だった場合、今年のXデーが 3/1になるからずれるような気がするが。どう?

30: Name_Not_Found 投稿日:2012/09/12(水) 21:21:17.16
実際3/1で1年経過したことになるから問題ない。

32: Name_Not_Found 投稿日:2012/09/13(木) 08:10:00.75
var hoge =new Array();

hoge[0] ="123";
hoge[1] ="153";
hoge[2] ="321";

var fuge = hoge;

hoge.length =0;

function test(){
   alert(fuge);
}
ってやるとなぜかfugeまで空になってしまいます
fugeにhogeを継承した後hogeを空にしてもfugeだけは残す方法とかないんでしょうか?

33: Name_Not_Found 投稿日:2012/09/13(木) 08:17:15.20
単純にコピーしたいのなら fuge = hoge.slice(0);
ディープコピーしたけりゃ自分で関数作るかJquery.extend使え
継承したいならそういうもんだから諦めろ
わからなければググレ

38: Name_Not_Found 投稿日:2012/09/13(木) 17:23:29.02 ID:D4ESY+fp
A.HTML上のボタンをクリック
→A.HTML上のフレーム内にB.HTMLを実行

B.HTML上のボタンをクリック
→新規ウィンドウでC.HTMLを実行

このとき、C.HTMLから親ウィンドウA.HTMLを閉じることは可能ですか?

39: Name_Not_Found 投稿日:2012/09/13(木) 17:38:15.76
やってみれば?

40: Name_Not_Found 投稿日:2012/09/13(木) 17:40:05.25
すいません、window.opener.close()で出来ないので質問させて頂きました。
何かよい方法はないでしょうか

41: Name_Not_Found 投稿日:2012/09/13(木) 17:40:46.98
window.opener.window.parent.close();

42: Name_Not_Found 投稿日:2012/09/13(木) 17:44:26.10
できました!ありがとうございます。

parentなどの並び順に不備がありました…

43: Name_Not_Found 投稿日:2012/09/13(木) 19:54:24.55
>>32
何で空になるのか。大事なところなのでこの際ちゃんと理解しといた方がいいよ

44: Name_Not_Found 投稿日:2012/09/13(木) 23:23:30.57
同一のドメインで XMLHttpRequest を使用してHTMLを取得したいのですが
その際に、送信されてしまうクッキーを送信しないようにする方法はありますか?

45: Name_Not_Found 投稿日:2012/09/14(金) 00:59:34.92
クッキーをどこかにメモって削除

ajax

クッキー元に戻す




て意味じゃないよな…

46: 38 投稿日:2012/09/14(金) 11:01:16.48
すいません、親ウィンドウを閉じる際に確認ダイアログが表示されますが、ダイアログを表示しないことは可能ですか?

親ウィンドウ→子ウィンドウならわかりますが、フレームを介する場合の方法がわかりません。
IE9を使用しています。

47: Name_Not_Found 投稿日:2012/09/14(金) 11:38:05.05
~よくわかるまとめ~

『配列を参照している変数』を初期化するなら[]
『変数が参照している配列』を初期化するならlength=0

81: Name_Not_Found 投稿日:2012/09/15(土) 19:25:26.91
質問です
正規表現でマッチした部分の位置を調べようと思ってるのですが
マッチしたのが一か所の場合index()などを使って取得すると最初にマッチ下部分や最後にマッチした部分の位置しか取得できません

var hoge = "123abc789abc34abc";
の文字列で"/abc/g"でマッチしたら4と10と15を得られるような方法とか無いのでしょうか?

82: Name_Not_Found 投稿日:2012/09/15(土) 19:36:53.28
一カ所マッチしたら、その後ろをまた調べれば良いじゃない

83: Name_Not_Found 投稿日:2012/09/15(土) 19:38:22.96
>>81
RegExp.exec()を繰り返し呼んで、lastIndexが更新されてくのを利用する。