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"));