1

ここで何が問題なのかわかりませんが、何が問題だと思いますか?

私はこの非常に単純な JavaScript 関数を持っています。Inspect Element コンソールに直接実行すると完全に機能しますが、イベントにバインドすると、「Uncaught TypeError: オブジェクトは関数ではありません」というエラーが返されます。ここで何が間違っていると思いますか?

これが関数です。

var pass_sh_busy = 0;
var pass_sh = function(y) {
if(pass_sh_busy) {
        document.getElementById('pass_sh').type = 'password';
        document.getElementById('pass_sh').placeholder = '********';
        pass_sh_busy = 0;
    } else {
        pass_sh_busy = 1;
        document.getElementById('pass_sh').type = 'text';
        document.getElementById('pass_sh').placeholder = 'password';
    }
}

pass_sh はこれ...

<input name="rass" id="pass_sh" placeholder="*********" type="password">

これが私のバインドされた要素です。

<input style="width:5%" type="button" onclick="pass_sh()">

これは非常に奇妙なエラーだと思います。ここで何が間違っていると思いますか?

4

1 に答える 1

1

問題は、 ID を持つ要素があることですpass_sh。ID を持つ要素は、その要素を参照する ID を持つグローバル変数を作成します。そのpass_shため、HTML 属性内では、関数ではなく DOM 要素を参照しているようです。

要素に別の ID を付けるか、関数に別の名前を付けてください。


参考までに、イベント ハンドラをバインドするより柔軟な方法があります

于 2013-06-02T12:41:25.553 に答える