0

私が欲しいのは:

if(document.forms[0].elements[0][1].checked)

また

 if(document.forms[0].elements[0].[1].checked)

機能するのは次のとおりです。

if(document.forms[0].rad[1].checked)

与えられた:

<h3>Who's Bill?</h3>
<input type="radio" value="0" name="rad">Bill Clinton
<input type="radio" value="1" name="rad">Bill Gates
4

2 に答える 2

1

さて、あなたの 2 番目の優先オプションは、単に構文的に間違っています。言語のルールに反するため、どのような状況でも機能しません。

最初の推奨アプローチは不合理ではありませんが、求めているのは特定の要素であると考えてください。つまり、フォームの最初の要素です。その要素は単一のラジオ ボタンであり、それらのグループではありません。そのため、その構文が好みかもしれませんが、実際にはコードで見ているものには従いません。

これが機能する方法は、フォームがラジオ グループ名にちなんで名付けられた配列オブジェクトを取得し、その配列の子がラジオ ボタンが実際に表示される順序で入力されることです。

document.forms[0].elements["rad"][0];//また、 (1、2... など)としてアクセスすることもでき ます。わかりません... あなたの好みのアプローチが何に基づいているのかわからないので、これがあなたにとってより魅力的かどうかはわかりません.

于 2012-04-21T07:54:33.093 に答える
0

elementsすべてのフォームの要素の配列が含まれています。つまり、 をポイントするdocument.forms[0].elements[0]と、最初のラジオ ボタン要素がポイントされます。代わりに使用すると、「rad」に等しいdocument.forms[0].rad要素を指すことになります。複数の要素が同じ名前を持つ場合、返されるのは要素の配列です。name

したがってdocument.forms[0].elements[0][1]、単に間違っているようなものがあります。HTMLInputElement オブジェクトの「1」という名前のプロパティにアクセスしようとしています。さらに、ラジオを「グループ化」するために、HTML コードで名前を使用する必要があります。そうしないと、相互に排他的ではなく、まとめて選択できます。

本当に必要な場合は、次のような独自の関数を作成して、同様のものを取得できます。

var elements = getElements(document.forms[0]);

if (elements[0][1].checked)

しかし、私にはメリットがわかりません。

于 2012-04-21T11:30:01.663 に答える