0

私はウェブサイトで作業していて、この問題が発生していたので、可能な限り単純化しました。

index.html:

<html>
<head></head>
<body>
    <script type="text/javascript" src="test.js"></script>

    <form id="myForm" onsubmit="log(this.id)">
        <input name="id">
    </form>
</body>
</html>

test.js:

function log(str){
    console.log("str=" + str);
}

フォームを送信すると、次のように表示されます。

str=[オブジェクト HTMLInputElement]

name の値を「id」以外に変更すると、予想される

str=マイフォーム

コード内の「name」と「id」のすべてのインスタンスを切り替えると、まったく同じ動作になります。言い換えれば、それはどちらの属性の特定の制限でもないように思われますが、より一般的なものです。

OS X 10.8 で MAMP を実行しています。Firefox 22.0 および Chrome ver. 28.

前もって感謝します

4

3 に答える 3

0

入力に「id」という名前を付けると、log(this.id) は log(myForm.id) に変換されます。ここで、id は myForm のプロパティであり、実際には入力子要素です。これは、表示される [object HTMLInputElement] クラス名によって示されます。

入力子コントロールに別の名前を付けると、this.id はフォームの id 属性を参照するようになりました。

名前または ID でコントロールを参照できるため、「id」を「name」に切り替える場合も同じロジックが適用されます。

于 2013-08-19T03:23:30.470 に答える
0

それは、 「フォームに属する名前の要素this.id」として解釈されているためです。そのため、パラメーターを介して [object HTMLInputElement] を受け取っています。そのような入力がない場合 (つまり、別の名前を付けた場合)は、フォーム idとして解釈されます。idthis.id

于 2013-08-19T03:27:35.970 に答える
0

.idon フォーム要素は、名前でフォーム フィールドにアクセスします。ID 属性を取得するには、 を使用しますthis.getAttribute('id')

于 2013-08-19T03:19:12.617 に答える