在这个(破碎的)最小示例中,我希望文本淡出,在不可见时更改,并重新显示更改的内容。这应该很简单(没有交叉渐变),但错误消息抱怨.html
不是函数。
<!DOCTYPE html>
<title>Image mask</title>
<script type="text/javascript"
src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.17/d3.min.js">
</script>
<body>
</body>
<script>
var textbox = d3.select('body').append('div');
textbox
.html('Click me.')
.style('cursor','pointer');
var i = 0;
textbox.on('click', function() {
i++;
textbox.transition()
.style('opacity', 0)
.transition().duration(300)
.html('Click me. <strong>' + i + '</strong>')
.transition().transition()
.style('opacity', 1);
});
</script>
PS我找到cross-fading的一个例子,但似乎没那么复杂(因为我不想要交叉渐变)并且需要版本4的.active
方法。
更新。如果将.html
替换为.text
,它“有效”,但我确实需要解析内容。
答案 0 :(得分:3)
原来(正如您所发现的)Error: test() method does not exist
没有d3.transition
方法。 docs here中缺少.html()
证实了这一点。这并不是完全出乎意料的,因为没有明显的方法可以解释transition.html
值的连续转换意味着什么,但是再次innerHtml
“可转换” ,就像你希望.remove()
转换一样(即非连续,在转换结束时)。
.html()
机制基本订阅转换结束来执行您想要执行的操作:
.each("end", function() {})