0

突然、JavaScript で未定義のエラーが発生します。

Error: TypeError: document.userForm.surname is undefined

フォーム フィールドの値を呼び出そうとすると、エラーが発生します。面白いことに、一部のフィールドは文字列型を返し、他のフィールドは未定義を返しますが、それらはすべて同じように宣言され、同じ入力型などです...私はこの時点でまったく無知であり、スタックオーバーフローの神々が私を助けてくれます。

以下は、値がデータベースから正常に返され、フォームのフィールドに入力されることを示すページのセクションです。

ユーザーを編集

上に表示されているフォームのセクションと、javascript を呼び出すボタンを次に示します。

<form class=\"gideonform\" name=\"userForm\">
<tr>
    <td id=\"right\">Password: </td>
    <td id=\"left\"><input size=\"50\"   maxlength=\"50\" type=\"password\" name=\"password\" value=".$dbuserpassword."></input></td>
</tr>
<tr>
    <td id=\"right\"></td>
    <td id=\"left\"></td>
</tr>
<tr>
    <td id=\"right\">Title: </td>
    <td id=\"left\"><input size=\"50\"   maxlength=\"5\" type=\"text\" name=\"title\" value=\"".$dbusertitle."\"></input></td>
</tr>
<tr>
    <td id=\"right\"></td>
    <td id=\"left\"></td>
</tr>
<tr>
    <td id=\"right\">Name: </td>
    <td id=\"left\"><input size=\"50\"   maxlength=\"50\" type=\"text\" name=\"name\" value=\"".$dbusername."\"></input></td>
</tr>
<tr>
    <td id=\"right\"></td>
    <td id=\"left\"></td>
</tr>
<tr>
    <td id=\"right\">Surname: </td>
    <td id=\"left\"><input size=\"50\"   maxlength=\"50\" type=\"text\" name=\"surname\" value=\"".$dbusersurname."\"></input></td>
</tr>
<tr>
    <td id=\"right\"></td>
    <td id=\"left\"></td>
</tr>
<tr>
    <td id=\"right\">Date of Birth: </td>
    <td id=\"left\"><input size=\"50\"   maxlength=\"50\" type=\"text\" name=\"dateofbirth\" id=\"dateofbirth\" value=\"".$dbuserdateofbirth."\"></input></td>
</tr>
<td id=\"left\"><input size=\"50\"  type=\"button\" id=\"button\" name=\"btnsubmit\" onClick=\"function1();\"  value=\"                 Save                  \"/></td>

そして、エラーが発生するJavaScriptファイルの行は次のとおりです。

name            :   document.userForm.name.value,
surname         :   document.userForm.surname.value,
title           :   document.userForm.title.value,

name と title のみが文字列型で、他のすべてのフィールドは未定義です。プロジェクト全体でこの正確なコードを使用し、正常に動作するため、これは私にとって非常に奇妙です。

4

2 に答える 2

1

あなたがこれをやろうとしている方法は

  • 神は時代遅れと考えられており、どのくらいの期間、
  • クロスブラウザではありません(しかし、よくわかりません)

より良い方法は、次を使用して要素を取得することgetElementByIdです。

name : document.getElementById('surname').value

idフォームに属性を割り当てることを忘れないでください。

<input name=\"surname\" id='surname' ...>

詳細については、 getElementByIdMDN のドキュメントを参照してください。

于 2013-07-30T09:49:08.827 に答える