filters是null或不是对象

时间:2014-01-23 04:53:06

标签: javascript internet-explorer

嘿伙计们正在尝试使用以下过滤器在IE 8中旋转和成像

所以我有这个设置角度的功能

var setElementAngle=function(ele,ang){
    var angle = Math.PI / ang;

    costheta = Math.cos(angle);
    sintheta = Math.sin(angle);

    ele.filters.item(0).M11 = costheta;
    ele.filters.item(0).M12 = -sintheta;
    ele.filters.item(0).M21 = sintheta;
    ele.filters.item(0).M22 = costheta;
};

我最初使用下面的函数

创建一个img元素
var create =function (el, attr, style) {
        this.elem = document.createElement(el);
        for (var k in attr) {
            if (attr.hasOwnProperty(k)) {
                this.elem.setAttribute(k, attr[k])
            }
        }
        for (var k in style) {
            if (style.hasOwnProperty(k)) {
                this.elem.style[k] = style[k]
            }
        }
        return this.elem
 };

       var _img=create('img',
{'id':'_img','width':'50','height':'53','border':'0','src':'10fqnav.jpg'},
{'position':'absolute',
 'height':'53px',
 'width':'50px',
 'zIndex':'9001',
 'top':'0px',
 'right':'0px',
 'display':'inline-block',
 'filter':'progid:DXImageTransform.Microsoft.Matrix(sizingMethod=\'auto expand\')'
 });

然后在我的代码中我改变了图像src属性,然后尝试旋转它

   $('#_img').attr('src','fold_new.jpg');
   setElementAngle(_img,0.45);

此时我收到以下错误

   Message: 'filters' is null or not an object

任何想法可能是什么原因。我也是最初设置过滤器。

1 个答案:

答案 0 :(得分:0)

_img很可能不会在您的

调用中指向HTML中的图像
setElementAngle(_img,0.45);

尝试将其更改为

setElementAngle($('#_img'),0.45);

我猜测内存中的副本(即_img)没有“布局”,直到它实际上在DOM中并且必须在那里访问。