1

このエラーが発生しています:

キャッチされていない TypeError: 未定義のメソッド 'getAttribute' を呼び出せません

このコードから ( http://pastebin.com/Lrv8JfWK ):

 <script type="text/javascript">
    // Wait until page is done loading
    window.onload = function()
    {
        var inputTagObjects = document.getElementsByTagName("input");
        var inputTagDefaultValues = new Array();
        for(var i = 0; i < inputTagObjects.length; i++)
        {
            // Only add input elements with a type and name attribute
            if(inputTagObjects[i].hasAttribute("type") && inputTagObjects[i].getAttribute("type") == "text" && inputTagObjects[i].hasAttribute("name"));
            {
                // Make sure the input element has a default value
                if(inputTagObjects[i].hasAttribute("value") == false)
                {
                    // Give an empty value attribute
                    inputTagObjects[i].setAttribute("value","");
                }
                // Assign default value to global array with the index of the input elements name
                inputTagDefaultValues[inputTagObjects[i].name] = inputTagObjects[i].value;

                // Assign Events
                inputTagObjects[i].onfocus = function()
                {
                    console.log(inputTagObjects[i].getAttribute("name") + " has been focused.");
                }
                inputTagObjects[i].onblur = function()
                {
                    console.log(inputTagObjects[i].getAttribute("name") + " has been blurred.");
                }
            }
        }

    }

フォーカス時にこれらのテキスト入力の値を削除し、ぼかしが完了したときに何も入力されていない場合はそれらを再入力することになっています。今のところ、コンソールに出力するだけです:

<body>
    <div id="form">
        <form method="post" enctype="multipart/form-data">
            <p><input type="text" name="firstName" value="First Name" /></p>
            <p><input type="text" name="lastName" value="Last Name" /></p>
        </form>
    </div>
</body>

このエラーが発生するのはなぜですか? (JQuery を使用せずに) どうすれば修正できますか?

4

1 に答える 1

1

イベント ハンドラーが呼び出されると、i割り当てられたときと同じものに設定されません。

ハンドラー関数内で置き換えinputTagObjects[i]てみてください。this

編集: 繰り返しますが、そのために JavaScript を使用しないでください。フォームをより適切にレンダリングするための提案を次に示します。

<p><label>First name: <input type="text" name="firstName" placeholder="John" /></label></p>
<p><label>Last name: <input type="text" name="lastName" placeholder="Smith" /></label></p>
于 2013-07-23T00:38:43.553 に答える