
var list = document.getElementsByTagName('div');
alert(list.item(0).id); ←div要素のid属性の値が表示される
alert(list.item[0].id); ←FireFoxでは、has no property エラーが出る
配列のIndex指定としては、後者が妥当な気がするのですが、
なぜこの場合は丸括弧で期待される結果が出るのでしょうか?
itemという関数を引数0で指定した結果のプロパティ"id"のように
見えるのですが...。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
item()はどうやらArray()ではなくDOMに関するメソッドの様ですね。
MacIE、iCabでもサポートしている様でした。
動作の違いは、item()の引数に文字列を指定すると、
IEとOperaではそのノードのID、またはNAMEと引数が一致するモノを取得出来ますが、
Netscape8.1とFirefoxでは取得出来ず。parseIntできないため引数を0として扱っている?
SafariとiCabは動作停止。
<input type="text" name="input1" id="input1" value="hello">
<input type="text" name="input2" id="input2" value="world">
<script>
var ilist=document.getElementsByTagName('input');
var itm=ilist.item('input2');
alert(itm.value);
// Fxでは"hello"
// IE、Operaでは"world"
</script>
style.filtersはIEしか使えないので、style.filters.item('フィルター名') は問題なさそうです。
IDを指定できればgetElementsByTagNameとitem()の併用で使い勝手がよくなると思ったんですが、
FxとSafariで動かないとちょっと、、、
No.4
- 回答日時:
HTMLTableElementのcells[0]とcells.item(0)とか、
style.filters[0]とstyle.filters.item(0)くらいしか知りません。
getElementsByTagNameの戻り値でも使えるのは知りませんでした。
とすると、item()はArrayオブジェクトのメソッドでしょうか?
私の知る限りでは、
list[0]
list.item(0)
のどちらかで、list.item[0]という使い方はできません。
style.filtersのみitem()を使って、それ以外(テーブルも)は普通の配列として[]を使っていますが、
配列として扱うのは、list.lengthの関係で都合がいいというか、見やすいんですよね。
filters.itemには数値ではなく'DXImageTransform.Microsoft.Alpha'など、文字列で指定出来るのがいいのです。
どっちが推奨されてるとか、どちらかをサポートしていないブラウザがある・ないとか、
あるんでしょうか?(便乗質問すみません)
会社の先輩に確認したところ、
itemは正しくメソッドであり、item(0)は紛れも無く関数呼び出しだそうです。で、その戻り値がNodeListだから、そのオブジェクトを受け取った上で、.演算子がそのプロパティを連結してalertで表示できる。
との事でした。
ブラウザどうこう、という話では、やはりないそうです。
自己解決すみません。
更なる有識者のアドバイスを求めて、もう少し質問はOPENしておきます。
No.3
- 回答日時:
本当にそのような動きをするブラウザがあるなら、document.getElementsByTagName('div')で作られた配列にitemと言うメソッドがあるか無いかの違いだけじゃないでしょうか。
こんなイメージのことをブラウザが勝手にやってくれているがどうかの違いじゃないでしょうか。
window.onload=function(){
var list = document.getElementsByTagName('div');
list.item = function(n){
return this[n];
}
alert(list.item(0).id)
list.item = list//これって凄く無駄なプロパティですね。
alert(list.item[0].id)
}
</script>
一応DOMでもitemはメソッドのようです。
http://72.14.235.104/search?q=cache:4DIsFp0867UJ …
javascriptでitemと言うプロパティがあるかどうかは知りません。
No.2
- 回答日時:
実際にNetscape 7(Gecko 1.4)と8(Gecko 1.7)とSeaMonkey1.1(Gecko 1.8.1)とOperaで実験してみましたが結果は全て同じ。
エラーになりました。(SeaMonkey1.1はシステムのバージョンがFirefox2.0と同じなのでスクリプトの解釈もほとんど同じです。)
エラー: list.item[0] has no properties
と言うことは()が正しいということですね。今回の場合。
理由などの詳しいことは…どうなんだろう(調べてるけどよく分からない)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ActiveXobjectが作成できない
-
【Tabキー】特定の範囲内だけで...
-
onchangeイベントを使ってspan...
-
javascriptでスロットゲームを...
-
画像上のクリックした場所が分...
-
div要素内の全input要素をdisable
-
innerHTML実行後のイベント
-
Click回数を数え、規定された回...
-
<a>タグのテキストを取得
-
onclickを使わずにイベント処理...
-
onclickとonkeypressの重複
-
JavaScript を使ってpkゲームを...
-
[javascript]DOCTYPE宣言対応に...
-
モーダルダイアログウィンドウ...
-
マウスストーカーやクリックで...
-
javascriptでCSVを呼出しvlookup
-
javascript 作成した要素にCS...
-
jspからjavascriptの変数引継ぎ
-
関数でy=g(x)のgとは何の略です...
-
idを使わずにonclickで自身の要...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ActiveXobjectが作成できない
-
<a>タグのテキストを取得
-
onchangeイベントを使ってspan...
-
javascriptで編集可能不可能の...
-
innerHTML実行後のイベント
-
javascriptの質問です
-
クリックでURLに飛ばすときに、...
-
ボタン上でマウスを押している...
-
別フレームのタグ属性を取得す...
-
DIV内のDIV要素を移動する。
-
HTML:Tableタグに対し、JavaScr...
-
任意の座標をクリックさせるには
-
お気に入り用のボタンを配置し...
-
1つの処理で複数表示させたい
-
WordPressのコンタクトフォーム...
-
指定した数値同士を合計計算し...
-
JavaScriptで文字列の置き換え
-
フォーカスを合わせる
-
div要素内の全input要素をdisable
-
[javascript]DOCTYPE宣言対応に...
おすすめ情報