Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 修改此脚本_Javascript_Internet Explorer_Png_Transparent_Fade - Fatal编程技术网

Javascript 修改此脚本

Javascript 修改此脚本,javascript,internet-explorer,png,transparent,fade,Javascript,Internet Explorer,Png,Transparent,Fade,我在这个网站上找到了这个脚本,它可以帮助在IE中淡入/淡出透明的.png,而在淡入淡出效果期间,透明部分不用黑色填充: var i; for (i in document.images) { if (document.images[i].src) { var imgSrc = document.images[i].src; if (imgSrc.substr(imgSrc.length-4) === '.png' || imgSrc.substr(im

我在这个网站上找到了这个脚本,它可以帮助在IE中淡入/淡出透明的.png,而在淡入淡出效果期间,透明部分不用黑色填充:

var i;
  for (i in document.images) {
    if (document.images[i].src) {
        var imgSrc = document.images[i].src;
        if (imgSrc.substr(imgSrc.length-4) === '.png' || imgSrc.substr(imgSrc.length-4) === '.PNG') {
            document.images[i].style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled='true',sizingMethod='crop',src='" + imgSrc + "')";
        }
    }
}
这个脚本是由创建的,它在我的网站上运行得非常好。但是,我想对它稍加修改。此脚本在我的页面上查找所有.png文件并应用过滤器。但是,这可能会导致性能问题,因为我的站点上有许多透明的.png文件,但我只需要将此筛选器应用于其中一个。这是一个固定位置的菜单DIV背景图像,在页面滚动时使用jQuery淡入淡出

有人可以帮我修改这个脚本,这样我就可以只提供一个图像,或者使用getElementById(“菜单”)并让它应用这个过滤器。我尝试过的方法似乎都不管用,而将过滤器放在CSS中也不管用,因此javascript方法似乎是可行的。我只需要在一个.png上使用它,而不是全部

记住,这是div#菜单的背景图像,因此图像本身没有ID,尽管div当然有。任何帮助都将不胜感激

根据规范,返回
img
元素的集合,因此如果它是
背景图像
,则不起作用。但是,如果是在后台使用的
img
,它将起作用。如果你只是想把它应用到一个你知道其ID的图像上,那么它就是

function applyFilterToImageById(id) {
    var i,
        parentElement = document.getElementById(id);
    for (i in parentElement.images) {
    if (document.images[i].src) {
        var imgSrc = document.images[i].src;
        if (imgSrc.substr(imgSrc.length-4) === '.png' || imgSrc.substr(imgSrc.length-4) === '.PNG') {
            document.images[i].style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled='true',sizingMethod='crop',src='" + imgSrc + "')";
        }
    }
}

嗨,山姆,谢谢你的快速回答。我想你指的是('menu')后面的句号,而不是分号。不管怎样,这似乎都不起作用。请记住,所讨论的图像是#menu div的背景图像(在css中设置)。我尝试过“var image=document.getElementById(“menu”).style.background;”之类的方法,但这也不起作用。啊,我认为你所问的是不可能的,因为
背景图像
不是html元素,我认为一定有某种方法可以引用该图像,因为我第一篇文章中的原始脚本非常适合该背景图像。我只是想简化一下,因为我的页面上有太多的.png文件,但我只需要一个…IE8的脚本。FF和Chrome无论是否使用脚本都没有问题。FF和Chrome内置了图像透明度支持。IE8需要这个,IE9不推荐使用它。除此之外,我不确定。我不使用Windows,也没有访问IE的权限。堆栈溢出的想法不是提供代码,而是带来特定的编程问题。如果你想编辑它一点,有一个问题,或者你在这样做时迷失了方向,那么请给我们其他的建议。我想这就是我所做的。我已经迷失了自己编辑代码的方法,所以我来到这里希望一个更有经验的程序员能发现我的问题很简单,并能帮助我。