Javascript 在输入类型图像中更改svg中的填充颜色

Javascript 在输入类型图像中更改svg中的填充颜色,javascript,jquery,html,css,svg,Javascript,Jquery,Html,Css,Svg,我遵循这个例子: 要像这样更改输入标签,请执行以下操作: <input name="ctl00$ctl00$cphM$cph$ImageButtonAnadirLote" class="btnAfirmativo" id="ctl00_ctl00_cphM_cph_ImageButtonAnadirLote" style="border-width: 0px; cursor: pointer;" onclick='javascript:WebForm_DoPostBackWithOpti

我遵循这个例子:

要像这样更改输入标签,请执行以下操作:

<input name="ctl00$ctl00$cphM$cph$ImageButtonAnadirLote" class="btnAfirmativo" id="ctl00_ctl00_cphM_cph_ImageButtonAnadirLote" style="border-width: 0px; cursor: pointer;" onclick='javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$ctl00$cphM$cph$ImageButtonAnadirLote", "", true, "", "", false, false))' type="image" src="https://upload.wikimedia.org/wikipedia/commons/f/f8/Windows_logo_-_2012_%28red%29.svg">
更改由输入类型图像引用的svg的颜色。我尝试在这里修改代码:

还有一个问题: 但这并不能提供我想要的解决方案


如果图像是svg文件,是否可以更改输入标记类型图像的颜色?调整JSFIDLE代码

因为已经打开了SVG并操作了它的内容,所以也可以使用它的填充颜色

var $path = jQuery(data).find('path');
$path.attr('style', $path.attr('style').replace("#e81123","#000"));
堆栈片段

$function{ //jQuery'img.btnAfirmativo'。每个函数{ jQuery'input.btnAfirmativo'。每个函数{ var$img=jQuerythis; var imgID=$img.attr'id'; var imgClass=$img.attr'class'; var imgURL=$img.attr'src'; jQuery.getimgURL,functiondata{ var$path=jQuerydata.find'path'; $path.attr'style',$path.attr'style'.replace81123000; //获取SVG标记,忽略其余部分 var$svg=jQuerydata.find'svg'; //将替换图像的ID添加到新SVG iftypeof imgID!=“未定义”{ $svg=$svg.attr'id',imgID; } //将替换的图像类添加到新的SVG IftypeofImgClass!=“未定义”{ $svg=$svg.attr'class',imgClass+'replaced svg'; } //根据删除所有无效的XML标记http://validator.w3.org $svg=$svg.removeAttr'xmlns:a'; //检查视口是否已设置,如果可以,我们将设置它。 如果!$svg.attr'viewBox'&&$svg.attr'height'&&$svg.attr'width'{ $svg.attr'viewBox','0'+$svg.attr'height'+'''+$svg.attr'width' } //用新SVG替换图像 $img.replace为$svg; }"xml",; }; }; btnAfirmativo{宽度:350px;高度:350px;}
据我所知,您无法设置远程资源的样式-只能设置内联SVG的样式。但是,您可以通过在输入上使用过滤器:brightness0;获得类似的结果,当且仅当它只是您的图像,没有任何背景或其他视觉样式。谢谢!这非常有用!但是…还有一个问题,为什么它不能与is image:我试图在这里修改它:@rasputino,没有测试,我想这是因为它们的编码不同,第一个编码=UTF-8,第二个编码=iso-8859-1。如果你检查它们的初始标记,你会发现它们不同。问题是svg格式无法更改。我需要使用iso-8859-1编码的svg文件。有有什么办法让它工作吗?谢谢again@rasputino如果比较这两个svg文件和元素,您会发现它们的属性不同。除了编码之外,请尝试使用一个与另一个不起作用的svg。rasputino我现在注意到的另一件事是,对于不起作用的svg,控制台报告没有“Access Control Allow Origin”hea请求的资源上存在der。您是否尝试将文件复制到自己的服务器/电脑上?
var $path = jQuery(data).find('path');
$path.attr('style', $path.attr('style').replace("#e81123","#000"));