人に聞けない痔の悩み、これでスッキリ >>

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

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

このQ&Aに関連する最新のQ&A

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に関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QINPUTにnameがない場合のsubmit

<FORM ACTION="login.asp" METHOD="POST">
USER ID:<INPUT TYPE="text" NAME="userid" SIZE="12"><br>
パスワード:<INPUT TYPE="password" NAME="pass" SIZE="12"><br>
<INPUT TYPE="submit" NAME="btn01" VALUE="ログイン">
<INPUT TYPE="reset" VALUE="クリア">
</FORM>

上記のHTMLに対して、VBAで操作する場合、
データセットした後

objIE.document.all.btn01.Click 'クリックメソッドを実行

で、submit出来るかと思います。

今、VBAで自動ログインしたいサイトが

<INPUT TYPE="submit" VALUE="ログイン">

のような感じで、nameの属性がありません。
こういうときは、VBAではどうすればログインできるのでしょうか。

初歩的な質問ですみませんが、わかる方教えてください。

<FORM ACTION="login.asp" METHOD="POST">
USER ID:<INPUT TYPE="text" NAME="userid" SIZE="12"><br>
パスワード:<INPUT TYPE="password" NAME="pass" SIZE="12"><br>
<INPUT TYPE="submit" NAME="btn01" VALUE="ログイン">
<INPUT TYPE="reset" VALUE="クリア">
</FORM>

上記のHTMLに対して、VBAで操作する場合、
データセットした後

objIE.document.all.btn01.Click 'クリックメソッドを実行

で、submit出来るかと思います。

今、VBAで自動ログインしたいサイトが

<INPUT TYPE="submit" VALUE="ログイン...続きを読む

Aベストアンサー

objIE.document.forms(0).elements(2).click
または
objIE.document.getElementsByTagName("INPUT")(2).click

Qjavascriptでセレクトボックスの"selected"を動的につ

javascriptでセレクトボックスの"selected"を動的につける方法について質問させてください。

現在、以下のようなフォームを作成しました。

<select name='year'>
<option value='2010'>2010</option>
<option value='2011'>2011</option>
</select>年

<select name='month'>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
<option value='4'>4</option>
<option value='5'>5</option>
<option value='6'>6</option>
<option value='7'>7</option>
<option value='8'>8</option>
<option value='9'>9</option>
<option value='10'>10</option>
<option value='11'>11</option>
<option value='12'>12</option>
</select>月

<select name='day'>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
<option value='4'>4</option>
<option value='5'>5</option>
<option value='6'>6</option>
<option value='7'>7</option>
<option value='8'>8</option>
<option value='9'>9</option>
<option value='10'>10</option>
<option value='11'>11</option>
<option value='12'>12</option>
<option value='13'>13</option>
<option value='14'>14</option>
<option value='15'>15</option>
<option value='16'>16</option>
<option value='17'>17</option>
<option value='18'>18</option>
<option value='19'>19</option>
<option value='20'>20</option>
<option value='21'>21</option>
<option value='22'>22</option>
<option value='23'>23</option>
<option value='24'>24</option>
<option value='25'>25</option>
<option value='26'>26</option>
<option value='27'>27</option>
<option value='28'>28</option>
<option value='29'>29</option>
<option value='30'>30</option>
<option value='31'>31</option>
</select>日


このセレクトボックスに、例えば今日の日付"2010年9月30日"だったら、それぞれの年、月、日の<option>に"selected"をつけたいのですが、javascriptではどのようにして実現したら良いのでしょうか?

よろしくお願いします。

javascriptでセレクトボックスの"selected"を動的につける方法について質問させてください。

現在、以下のようなフォームを作成しました。

<select name='year'>
<option value='2010'>2010</option>
<option value='2011'>2011</option>
</select>年

<select name='month'>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
<option value='4'>4</option>
<option value='5'>5</option>
<option value='6'>6</option>
<option value='7'>7</option>
<option value='8...続きを読む

Aベストアンサー

こんな感じで・・・

<script>
window.onload=function(){
var f=document.getElementById("f0");
var ymd=new Date();
checkSelect(f.elements["year"],ymd.getFullYear());
checkSelect(f.elements["month"],ymd.getMonth() +1);
checkSelect(f.elements["day"],ymd.getDate());
}
function checkSelect(obj,val){
for(var i=0;i<obj.length;i++){
if(obj[i].value==val){
obj[i].selected=true;
break;
}
}
}
</script>
<form id="f0">
<div>
<select name='year'>
<option value='2009'>2009</option>
<option value='2010'>2010</option>
<option value='2011'>2011</option>
</select>年

<select name='month'>
<option value='8'>8</option>
<option value='9'>9</option>
<option value='10'>10</option>
</select>月

<select name='day'>
<option value='29'>29</option>
<option value='30'>30</option>
<option value='31'>31</option>
</select>日
</div>
</form>

こんな感じで・・・

<script>
window.onload=function(){
var f=document.getElementById("f0");
var ymd=new Date();
checkSelect(f.elements["year"],ymd.getFullYear());
checkSelect(f.elements["month"],ymd.getMonth() +1);
checkSelect(f.elements["day"],ymd.getDate());
}
function checkSelect(obj,val){
for(var i=0;i<obj.length;i++){
if(obj[i].value==val){
obj[i].selected=true;
break;
}
}
}
</script>
<form id="f0">
<div>
<select name='year'>
<opt...続きを読む

QonClickに複数の関数を挿入する方法

初心者なのですがアニメーションの関数anime1、anime2、anime3を作成し、onClickに下記のように設定しました。
クリックするとアニメーション2つの設定ではは動くのですが、3つ目を設定すると動かなくなります。
通常はこのような設定はしないものなのでしょうか?
教えてください。
よろしくお願いします。
<INPUT type="button" value="START" onClick="anime1(), anime2()">・・・OKです。
<INPUT type="button" value="START" onClick="anime1(), anime2(),anime3()">・・・動きません。

Aベストアンサー

セミコロンでつなぐのが常道ですが、3つ以上なら
別途function化したほうが、可読性が高くなると
思います。

QgetElementsByNameで要素が取得できない

久々にJavaScriptを組みました。
以下のソースコードなんですが、ボタンクリック時にalertで「1」
が表示されるはずだと思っているのですが、「0」が返ってきます。
何かおかしなところはありますでしょうか?宜しくお願いします。

<html>
<head>
<script language="javascript">
function test(){
var obj = document.getElementsByName("name1");
alert(obj.length);
}
</script>
</head>
<body>
<div name="name1"></div>
<button onclick="test();">TEST</button>
</body>
</html>

Aベストアンサー

非常に珍しいIEの正しい挙動だと思う。
(Minefield,Opera,Safariは1を返す)

ずーっとあるもんだと思ってたが,
【div要素はname属性を持たない!】
http://www.w3.org/TR/REC-html40/index/attributes.html

BUTTON, TEXTAREA,APPLET,SELECT,FORM,FRAME,IFRAME,IMG,A,INPUT,OBJECT,MAP,PARAM,META
しか持たない。

もしname属性がdiv要素ではなくinput要素に付いていたら,
IEは1を返しました。

#つーことで,id属性を使いましょう。getElementsByIdを使えばおそらく似たようなことは出来るはずなので

Qformで特定のinputを送信しないようにしたい

複数のinputを送信時に値をフォーマットに従ってまとめて送信するとき
そのもととなった複数のinputは送信しないようにしたいです
(郵便番号など入力欄を二つにわけるが送信時は一つにまとめるなど)

nameを付けないという方法も考えましたが
radioを含む場合に不都合なのでこの方法はとりたくありません

また送信時にinputを削除するという方法も
ajaxで元のページにとどまることも考えうるので
この方法もとりたくありません

理想はinputに特定の属性値を与えると
form送信時に送信しないようになる
とかだったのですがその方法は見つけられませんでした

クライアントサイドでの処理が難しそうなら
サーバーサイドでの処理にしますが
できれば避けたいと思っています

よろしくお願いします

Aベストアンサー

できないです。
そもそもCGI側に渡すための物ですから
(郵便番号など入力欄を二つにわけるが送信時は一つにまとめるなど)
入力ページから送信された物は一旦CGI側で、
$postcode="120-1135";
とかになって、
<input type="hiidden" name="zip-code" value="120-1135">
・・・・・
<th>郵便番号</th><td class="zip-code">120-1135</td>
とtableか、
<input type="text" name="zip-a" value="120" readonly>-<input type="text" name="zip-b" value="1135" readonly>
とかの再フォーになっているはず。
 <input type="text" name="zip-a" value="120">-<input type="text" name="zip-b" value="1135">
 で修正を受け付けても良い。

>クライアントサイドでの処理が難しそうならサーバーサイドでの処理にしますができれば避けたいと思っています
 これ、根本的に間違っています。
 javascriptなどはユーザー側に制約されるので、可能な限り楽な方法--CGI側で処理すべきです。そのほうが楽です。

できないです。
そもそもCGI側に渡すための物ですから
(郵便番号など入力欄を二つにわけるが送信時は一つにまとめるなど)
入力ページから送信された物は一旦CGI側で、
$postcode="120-1135";
とかになって、
<input type="hiidden" name="zip-code" value="120-1135">
・・・・・
<th>郵便番号</th><td class="zip-code">120-1135</td>
とtableか、
<input type="text" name="zip-a" value="120" readonly>-<input type="text" name="zip-b" value="1135" readonly>
とかの再フォーになっているはず。
 <input t...続きを読む

Qフォームで同じ複数のnameで違うvalueの送信

始めまして、現在一個のフォーム内で複数の同じnameで、違うvalueを送信しようと苦戦しております、、普通にタグを書くだけでは
一個のnameで違うvalueの送信は、最後のvalueしか送信できないです、
phpは使用できません。javaは、、殆ど素人なので、あまり分かりません、、formを一個一個区切るのも、レイアウト上できません、、
どうすればいいのでしょうか?・・・以下タグです。
昨日から、ここから先に進めません。。
先輩方助けてください、本当によろしくお願いします。

<form action="http://hoge.net/hoge/hogecheck.php" method="post">
<input type="hidden" name="site" value="hoge">
<input name="id" type="text" id="idform" maxlength="10" />

<input type="hidden" name="kin" value="3000">
<input type="image" src="buybtn.gif" />
<input type="hidden" name="kin" value="5000">
<input type="image" src="buybtn.gif" />
<input type="hidden" name="kin" value="10000">
<input type="image" src="buybtn.gif" />
<input type="hidden" name="kin" value="20000">
<input type="image" src="buybtn.gif" />

</form>

始めまして、現在一個のフォーム内で複数の同じnameで、違うvalueを送信しようと苦戦しております、、普通にタグを書くだけでは
一個のnameで違うvalueの送信は、最後のvalueしか送信できないです、
phpは使用できません。javaは、、殆ど素人なので、あまり分かりません、、formを一個一個区切るのも、レイアウト上できません、、
どうすればいいのでしょうか?・・・以下タグです。
昨日から、ここから先に進めません。。
先輩方助けてください、本当によろしくお願いします。

<form action="http://hoge...続きを読む

Aベストアンサー

No.2の回答者です。
スミマセンm(__)m、Javaでしたね。PHPで書いてしまいました。。。

Java だったらこれで取れます。(HTML側の修正は不要です。)
String[] kin= req.getParameterValues("kin");

QリンクでPOSTデータを送信することは可能ですか?

はじめまして。
Submitボタンを使用せずに<A>リンクでFORMのPOSTメソッドデータを送信することは可能でしょうか?
やはりURLにデータを付加して送信するしかないのでしょうか?
ご教授よろしくお願い致します。

Aベストアンサー

javascript を使えば可能です。大雑把にはこんな感じ。

・パラメータが全部 hidden な form を記述しておく(ブラウザでは表示されない)
・<a href> では、その form を submit するように javascript を記述する

試してないですけど、こんな感じ。

<form name=f method=POST action="http://どこか">
<input type=hidden name=x1 value=v1>
</form>

<a href="javascript:document.f.submit()">リンクから submit</a>

Q