「これはヤバかったな」という遅刻エピソード

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

document.nameが無いためにここの指定が出来ないのです.checked = check;

A 回答 (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/getEl …
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/08/10 22:43

最悪名前が無くても


document.forms[インデックス].elements[インデックス]
で任意のフォームにアクセスできます。
    • good
    • 1
この回答へのお礼

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

お礼日時:2006/08/10 22:44

フォームにid属性はないのですか?


var f=document.getElementById('form0')

n番目にでてくるという順番がきまっているなら
n-1を指定するとアクセスでできます
var f=document.forms[0]
//1番最初に出てくるフォームは番号は0

最悪、textやcheckboxをtagの集合として選ぶても
var obj=document.getElementsByTagName('input')
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/08/10 22:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報