是否可以在svg中定位具有使用javascript设置的fill属性的特定路径?

时间:2019-11-07 08:57:58

标签: javascript svg

大家好,我在其中插入了一些svg元素的页面,它们看起来像这样:

<svg>
<path fill="#FFFFFF" d='....'></path>
<path d='....'></path>
<path d='....'></path>
<path d='....'></path>
</svg>

我无法更改使用javascript库注入的svg文件,并且我想即时更改其背景颜色,有没有办法定位将fill属性设置为某些东西的唯一路径?< / p>

1 个答案:

答案 0 :(得分:2)

  

无论元素是否具有特定属性,都可以使用hasAttribute

#!/usr/bin/perl

use strict;
use warnings;
use feature 'say';
use List::Util 'sum';

my %value_map = load_value_map();

my $input = shift // '';
$input =~ s/[^ACGU]//g;

until ($input) {
  print 'Give me a string of letters [ACGU]: ';
  chomp ($input = <STDIN>);
  $input =~ s/[^ACGU]//g;
}

my @values;

for (0 .. length($input) - 2) {
  my $str = substr $input, $_, 2;
  if (exists $value_map{$str}) {
    push @values, $value_map{$str};
  } else {
    warn "$str is not a valid map key\n";
    next;
  }
}

say 'total value is ', sum(@values), ' (', join('+', @values), ')';

sub load_value_map {
  open my $fh, '<', 'value.txt' or die $!;

  my %value_map = map { chomp; split } <$fh>;

  for (keys %value_map) {
    if ($value_map{$_} =~ /\D+/) {
      $value_map{$_} = $value_map{$value_map{$_}};
    }
  }

  return %value_map;
}