如何将alpha过滤器添加到任何HTML元素并将其他过滤器保留在IE中?

Jan*_*roň 6 javascript css internet-explorer

如果我有这个HTML

<img src="aaa.png" id="a" style="filter: alpha(opacity=100)"/>
Run Code Online (Sandbox Code Playgroud)

然后这个JavaScript在IE6中工作

document.getElementById("a").filters.alpha.opacity = 60;
Run Code Online (Sandbox Code Playgroud)

但如果没有设置风格

<img src="aaa.png" id="a" style=""/>
Run Code Online (Sandbox Code Playgroud)

javascript抛出错误'filters.alpha'为null或不是对象

这段代码有效

document.getElementById("a").style.filter = "alpha(opacity=60)";
Run Code Online (Sandbox Code Playgroud)

但随后应用于图像的其他滤镜将被覆盖.所以问题是:如何将alpha过滤器添加到任何HTML元素并将其他过滤器保留在IE中?

编辑我想纯javascript(而不是jQuery)解决方案

kap*_*apa 8

不幸的是,在我看来,你只能通过style.filter属性添加新元素,filters你只能操作已经存在的元素.

filter是一个集合对象,你可以在这里找到docs:filters Collection.它为您提供了一种简单易用的现有过滤器,您可以打开和关闭它们(enabled)等.

例如,您可以使用

obj.filters.item("DXImageTransform.Microsoft.Alpha").opacity=20;
Run Code Online (Sandbox Code Playgroud)

或者(如果alpha是你第一次过滤声明)

obj.filters.item(0).opacity=20;
Run Code Online (Sandbox Code Playgroud)

CLASSES

大多数情况下,最好将过滤器声明存储在CSS中的某些类下,并且只使用JS来分配正确的类而不是style直接操作值.