0

jquery IEプレースホルダーの修正を機能させようとしています。IE9では問題なく動作しますが、IE8ではアラートが表示され続けます...

'attr(...)' は null またはオブジェクトではありません

これは私が使用しているコードです。私は何か間違ったことをしていますか?

<!--[if lte IE 9 ]>
    <script>
        // IE Placeholder Fix
        $(function() {
            if ($('input[placeholder]').attr('placeholder').val() != '') {
                var ph = $('input[placeholder]').attr('placeholder');
                $('input[placeholder]').blur();
                if ($('input[placeholder]').attr('value').val() == 0) {
                    $('input[placeholder]').attr('value', ph);
                    $('input[placeholder]').css('color','#999999');
                };
                $('input[placeholder]').click(
                    function() {
                        $(this).css('color','#000000');
                        if ($(this).attr('value') == ph) {
                            $(this).attr('value','');
                    }
                });
            }
        });
    </script>
<![endif]--> 

アップデート:

以下のコメントを使用して、私が思いついた...

<!--[if lte IE 9 ]>
    <script>
        // IE Placeholder Fix
        $(function() {
            if ($('input[placeholder]').length != 0) {
                var ph = $('input[placeholder]').attr('placeholder');
                $('input[placeholder]').blur();
                if ($('input[placeholder]').attr('value') == '') {
                    $('input[placeholder]').attr('value', ph);
                    $('input[placeholder]').css('color','#999999');
                };
                $('input[placeholder]').click(
                    function() {
                        $(this).css('color','#000000');
                        if ($(this).attr('value') == ph) {
                            $(this).attr('value','');
                    }
                });
            }
        });
    </script>
<![endif]--> 
4

1 に答える 1

1

null オブジェクトでメソッドまたはプロパティを呼び出すと、発生している種類のエラーが発生します。オブジェクトが定義されているかどうかわからない場合は、子を参照する前にこれをテストしてください。

于 2012-10-23T18:24:25.817 に答える