IE8'attr(...)'为null或不是对象

时间:2012-10-23 18:07:17

标签: jquery placeholder attr

我正在尝试使用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]--> 

1 个答案:

答案 0 :(得分:1)

调用null对象上的方法或属性将导致您遇到的排序错误。如果您不确定是否定义了某个对象,请在引用任何子项之前对其进行测试。