質問です。
あるページで、いくつかのテーブルに同じ処理を行おうとしています。
テーブルごとに id をつけてもいいのですが、たくさんあると手間なので、ま
とめてできる方法はないかと思って探していました。
document.getElementsByTagName('table')
でページ内のすべてのテーブルのリストを得ることができることがわかりまし
たが、このプロパティが存在しない場合にはどのように代替可能でしょうか。
以前、document.getElementById('id') は、ブラウザが対応しない場合に判
定してdocument['id']で置き換えるように教えていただきましたが、
getElementsByTagName の場合にも同様の置換をする方法がありましたら教え
てください。
--
吉見 隆 mailto:tak-y...@NOSWENrio.odn.ne.jp
In message news:cliknk$kng$1...@caraway.media.kyoto-u.ac.jp
"吉見 隆" <tak-y...@NOSWENrio.odn.ne.jp> wrote ...
> 以前、document.getElementById('id') は、ブラウザが対応しない場合に判
> 定してdocument['id']で置き換えるように教えていただきましたが、
> getElementsByTagName の場合にも同様の置換をする方法がありましたら教え
> てください。
ブラウザによって異なると思います。
IE だと、IE4 は document.getElementById('id') は無いので、
document.all['id'] を使うことになり、IE4 で使えるかわからないですが、
IE 系だと、document.getElementsByTagName('tagname') 相当は
document.all.tags('tagname') も使えます。
Opera 6.x あたりだと、多分どちらも無いんじゃないかと思います。
# Opera6の起動は遅いので、確認してないですが・・・(^^;
In article <cliknk$kng$1...@caraway.media.kyoto-u.ac.jp>
吉見 隆 <tak-y...@NOSWENrio.odn.ne.jp> writes:
> あるページで、いくつかのテーブルに同じ処理を行おうとしています。
> テーブルごとに id をつけてもいいのですが、たくさんあると手間なので、ま
> とめてできる方法はないかと思って探していました。
>
> document.getElementsByTagName('table')
これ、XML の処理系の DOM の手続きですね。
> でページ内のすべてのテーブルのリストを得ることができることがわかりまし
> たが、このプロパティが存在しない場合にはどのように代替可能でしょうか。
getChildNodes() して再帰するっというのは、たぶんダメなんでしょ
うね。getElementsByTagName() がないようだと、getChildNodes()
もないんでしょう。
JavaScript って、DOM に関して何か標準があるんですか。
\\ 新城 靖 (しんじょう やすし) \\
\\ 筑波大学 電子・情報 \\
> これ、XML の処理系の DOM の手続きですね。
そういう断言はどうなんだろう。XMLよりDOMの方が実装は古くから存
在していそうだけど。
> JavaScript って、DOM に関して何か標準があるんですか。
http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/
ecma-script-language-binding.html
1998.10.1ってXMLにネームスペース入るよりも前です。 久野
> IE 系だと、document.getElementsByTagName('tagname') 相当は
> document.all.tags('tagname') も使えます。
>
> Opera 6.x あたりだと、多分どちらも無いんじゃないかと思います。
> # Opera6の起動は遅いので、確認してないですが・・・(^^;
以前 Opera で document.getElementsByTagName() が使えなかった
気がしてたのですが、今日試してみたら、
document.getElementsByTagName()
document.all.tags()
共に使えました。
やっぱり確認してみないと駄目ですね・・・(^^;;;
あと、総当たりで、
for (i=0; i < document.all.length; i++) {
if (document.all[i].tagName == "TABLE")
alert("hit");
}
でも OK でした。
ただ、セルの中身を操作する方法はわからなかったです。
# IE なら、.rows[].cells[].innerText 等か
# DOM になります。
「XML または HTML の処理系の DOM の手続き」なら断言していい
ですか。
> > JavaScript って、DOM に関して何か標準があるんですか。
> http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/
> ecma-script-language-binding.html
> 1998.10.1ってXMLにネームスペース入るよりも前です。 久野
ECMAScript の所が、JavaScript の標準ということですか。
それには、childNodes() は、定義されています。
元の話は、getElementsByTagName() がなくて、childNodes() があ
るJavaScript の処理系が存在するのかどうかという話なんだけど。
あれば、それで再帰して探せばいいわけです。firstChild() から
lastChild() まで nextSibling() で回してもいいけど。
DOM だと改行だけでもノードになるのが気に入らないんだけど。
> 「XML または HTML の処理系の DOM の手続き」なら断言していいですか。
別にDOMだけでもいいような ^_^;
> ECMAScript の所が、JavaScript の標準ということですか。
ああ、そうです! もしかしてECMAScriptはJavaScriptじゃないだろう
とかいう突っ込みだったりして ^_^;; そういうことになるとIEには
JavaScriptなんか載ってないという話になるわけですが…
> 元の話は、getElementsByTagName() がなくて、childNodes() があ
> るJavaScript の処理系が存在するのかどうかという話なんだけど。
すいません、よく読んでませんでした。だったらなさそうだな。
> DOM だと改行だけでもノードになるのが気に入らないんだけど。
まあちょっと不便だけど改行の情報捨てちゃうのも用途によっては困
るんでしょうね。
慣れればそういうもんだと思って使うかな。 久野