• ベストアンサー

name属性のないformタグの、中身を操作する方法を教えてください

greasemonkeyを書こうと思っているのですが、その対象ページの<form>タグには、 name属性が無く、その中のテキストボックスやチェックボックスの操作をJavaScriptから行う事が出来ません。 スマートに操作するためにはどのようなやり方がよいでしょうか? document.nameが無いためにここの指定が出来ないのです.checked = check;

質問者が選んだベストアンサー

  • ベストアンサー
  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.3

フォームの部品(テキストボックスやチェックボックス)にnameが付いているならgetElementsByNameで指定したnameを持つ要素のリストを得ることができます。→参考URL 例) <input type="text" name="tbox1"> <input type="checkcbox" name="cbox1"> var cbox = document.getElementsByName('tbox1')[0];//[0]はリストの0番目 cbox.value='aaaa'; var cbox = document.getElementsByName('cbox1')[0]; cbox.checked = true; ※フォームの部品にid属性が付いているなら#1さんの方法(getElementById)で直接その要素を得る事もできます。 ※フォームの部品が得られれば、親のformそのものは オブジェクト.form でアクセスする事もできます。 どこにもnameもidも付いていないなら#2さんの方法がよいかと思います。

参考URL:
http://www.openspc2.org/JavaScript/ref/DOM/getElementsByName/
bunch
質問者

お礼

steel_grayさんの方法が一番しっくり来ました。ありがとうございます。

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

最悪名前が無くても document.forms[インデックス].elements[インデックス] で任意のフォームにアクセスできます。

bunch
質問者

お礼

ありがとうございます。とても参考になりました

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

フォームにid属性はないのですか? var f=document.getElementById('form0') n番目にでてくるという順番がきまっているなら n-1を指定するとアクセスでできます var f=document.forms[0] //1番最初に出てくるフォームは番号は0 最悪、textやcheckboxをtagの集合として選ぶても var obj=document.getElementsByTagName('input')

bunch
質問者

お礼

残念ながらID属性は用意されていませんでした。 getElementsByTagNameはとても便利ですね。ありがとうございました。

関連するQ&A