JavaScript の質問用スレッド テンプレ

FAQ

Q1. 開いた別窓/フレームの内容にアクセスできないのですが…
ページ内容が別サーバの場合セキュリティ制約により絶対無理です。
Q2. JavaScriptでローカルファイルを読み/書きたいのですが…
Webではセキュリティ制約により絶対無理です。できたら恐ろしいことに…
Q3. 同じタグの中でonclick="foo()"とonclick="bar()"を同時に使いたいのですが…
セミコロンで複数の文を区切れます。onclick="foo();bar();"としましょう。
Q4. document.write(...)でページ内容を追加したいのですが…
一度ページ表示完了後にwriteすると内容はクリアされちゃいます。
部分的に内容変更するには(1)他フレーム/iframe/別窓への表示、
(2)textarea等への表示、(3)DOMでノード挿入、(4)innerHTMLのどれかで。
innerHTMLは非標準ですがIE、Opera、Safari、Gecko(N6/N7/Firefox等)で対応済。
Q5. table/tbody/tr要素のinnerHTMLを書き換えるのがうまく行かないのですが…
IEはそれらの要素のinnerHTMLは変更不能。DOMを使って書き換えるか <div><table>...</table></div> とでもしてdivのinnerHTMLを書き換えましょう。
Q6. DOMでtable要素にtr要素を追加しても表示されないのですが…
DOMでは(XHTML 1.x除く)tbody要素にtr要素を追加する必要があります。
tbody要素はtbodyタグを書いていなくても自動的に作成されます。
またはtable.insertRow()/tbody.insertRow()を使いましょう。
Q7. 変数w1、w2…を順にループで(番号をiに入れて)設定/参照したいのですが…
グローバル変数はwindowのプロパティだからwindow['w'+i]を読み書きすれ。
Q8. フォーム部品名を変数にした「...myform.変数名.value」が動きません…
document.forms.myform.elements[変数名].value」でどぞ。
JavaScriptでは一般に「obj.x」と「obj['x']」は同じ意味です。
Q9. Aタグのonclickで動作指定してるのですが時々動きません…
「onclick="...;return false"」としないとページ移動しちゃうから。
Q10. CSSで設定した背景色がe.style.backgroundColorで取得できないのですが…
取得には document.defaultView.getComputedStyle() を使う必要あり。
IEでは要素オブジェクトのプロパティcurrentStyleを使う。
Q11. 100*1.15の結果が114.999…998となってしまうのですが…
コンピュータの実数計算は全て近似値だと思え。誤差が嫌なら整数で計算。
Q12. 任意のデータをサーバ(別鯖ではない)から取り寄せたいのですが…
IE7/Gecko /Opera/SafariのXMLHttpRequest()、IEのActiveXObject("Msxml2.XMLHTTP.6.0") (または"Msxml2.XMLHTTP.3.0") を使えばできます。古いブラウザだと隠しフレームに読むなどのワザが必要。
IE7- では setAttribute はDOMプロパティへのセッターとして働きます。(IE8 で修正済み)
obj.className = "foo"; または obj.onclick = bar; で対応してください。 複数の関数を呼びたいときは obj.onclick=function(){foo();bar();}; という風に無名関数を作りましょう。中に書かれたコードが実行されます。
IE ではそれは不可。「obj.className="foo"」「obj.onclick=bar」でどぞ。 複数の関数を呼びたいときは obj.onclick=function(){foo();bar();}; という風に無名関数を作りましょう。中に書かれたコードが実行されます。
Q14. タイマーやイベントハンドラに設定するコードにthisを含めたいのですが、「"...this..."」とか「function(){...this...}」ではうまく行きません。
それらが実行されるときはthisは別のもの(window等)を指してしまってる。
「function(x){return function(){...x...};}(this)」のようにthisを別の変数に束縛しその変数を使って。循環参照によるメモリリーク問題あり(この項記述検討中)
Q15. 文字列の置き換えをするときにコードを使いたい(Perlのs///e)のですが…
string.replace(/... /,function(str,p1,p2,...,offset,s){...})としましょう。正規表現にマッチした文字列がreturnで返された文字列に置き換えられます。各引数はstrがマッチした部分文字列、p1,p2,...が1番目、2番目、…の()の中身、offsetがマッチした位置、sが置き換え前の文字列全体になります。
Q16. input type="file"の値を設定(参照)できないのですが…
セキュリティ制約のため設定は絶対に不可。参照はブラウザにより不可。 FileList
Q17. getElementById('ID名')や$('ID名')で要素が取れないのですが…
コード実行時点でHTMLがそこまで読まれてない。onload中でやるとか。
Validator
HTML
ECMAScript
DOM
JavaScript
E4X (ECMAScript for XML)
JScript/MSDN
JSON