我试图在SVG中获取一个文本元素,随着选项的更改更新它。经过搜索,我已经能够在页面的初始加载以及选项更改时看到(在控制台中)选项更改,但是我无法成功地使数字更改。任何帮助将不胜感激。
<!DOCTYPE html>
<html>
<head>
<title>Dropdown Test</title>
<script src="https://d3js.org/d3.v4.min.js"></script>
</head>
<body>
<select id="filter">
<option value="GroupOne">Group One</option>
<option value="secondTen">Group Two</option>
<option value="thirdTen">Group Three</option>
</select>
<section id='svgCanvas'>
</section>
<script>
var width = 100;
var height = 100;
var numberData = [
{"Number":10,"Group":"GroupOne"},
{"Number":13,"Group":"GroupTwo"},
{"Number":6,"Group":"GroupThree"},
];
var canvas = d3.select("#svgCanvas")
.append('svg')
.attr('height',height)
.attr('width',width);
function filterData(filterCriteria) {
console.log(filterCriteria);
var svgNumber = canvas.selectAll('text')
.data(numberData);
svgNumber.enter()
.append('text')
.filter(function(d){return d.Group == filterCriteria;})
.text(function(d){return d.Number;})
.attr('x',10)
.attr('y',30)
.attr('fill','#000000')
.attr('id','numberText');
svgNumber.exit().remove();
};
filterData('GroupOne');
d3.select("#filter")
.on('change', function() {
var filter = d3.select(this).property('value');
filterData(filter);
console.log(filter);
});
</script>
</body>
</html>