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で質問しましょう!
似たような質問が見つかりました
- PHP アコーディオンPHPが上手くいかない 3 2022/07/15 16:29
- HTML・CSS CSS のみのタブ切り替えについて 1 2023/01/11 16:47
- Ruby No route matches [GET] "/posts/5/destroy" 1 2022/03/24 13:00
- Excel(エクセル) エクセルの数式で添付写真のものを入力していてわからないのですが、こちらの通り[]括弧も入れて入力しま 4 2023/02/05 18:33
- その他(IT・Webサービス) html cssについて 3 2023/05/13 12:48
- PHP style.cssのjQuery条件付きcssが機能しない 4 2022/07/17 18:27
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Click回数を数え、規定された回...
-
「nullまたはオブジェクトでは...
-
<a>タグのテキストを取得
-
ActiveXobjectが作成できない
-
イベントリスナーに設定した関...
-
モーダルダイアログウィンドウ...
-
配列の大括弧と丸括弧はどう違う?
-
JavaScriptでの動的な多次元配...
-
google apps scriptの終了のさせ方
-
ASP.NETのコントロールの値をJa...
-
【正規表現】【javascript】CR...
-
二次元配列を使って順位をだす...
-
C#OpenCv V4にのエラーに関する...
-
FireFoxのjavascriptで自動でキ...
-
Imageコントロール vba
-
重複のない乱数の表示をするには?
-
Linux バイナリ実行できない "...
-
GASでundefinedエラーが出ます
-
Null またはオブジェクトではあ...
-
jsによって検索プルダウン、都...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
<a>タグのテキストを取得
-
ActiveXobjectが作成できない
-
innerHTML実行後のイベント
-
任意の座標をクリックさせるには
-
javascript 特定のタグのidの存...
-
onchangeイベントを使ってspan...
-
HTML:Tableタグに対し、JavaScr...
-
モーダルダイアログウィンドウ...
-
日本語入力の禁止
-
javascriptでCSVを呼出しvlookup
-
Click回数を数え、規定された回...
-
画像上のクリックした場所が分...
-
【Tabキー】特定の範囲内だけで...
-
配列の大括弧と丸括弧はどう違う?
-
重複しないくじの作り方がわか...
-
javascriptで、表示されている...
-
div要素内の全input要素をdisable
-
javascriptであるボタンを押す...
-
javascriptで自動計算フォーム...
-
RadioButtonListの表示制御
おすすめ情報