3
私はボタンの列を持っています。ユーザーがボタンをクリックすると、メッセージを表示して数秒後に非表示にします。D3で.each()が動作しないのはなぜですか?
-
:
「追加」ボタンをクリックすると、クリックされたボタンの横に表示されるのではなく、すべてのメッセージが表示されます。
.each
を使った方法に何か問題がありますか?メッセージをある程度の時間をかけて隠すことはできません。私は
delay
とfadeOut
を使ってみましたが、それは関数全体を破壊しました。
はHTML
<div class="wrapper">
<div class="add">
Add
<span class="message"></span>
</div>
<div class="add">
Add
<span class="message"></span>
</div>
</div
D3
d3.select(".add")
.on("click", function() {
d3.selectAll(".message")
.each(function() {
d3.select(this)
.transition()
.duration(500)
.style("opacity", 1)
.text("added");
})
})
私は2つの問題を持っています
大変助かりました。
スニペット
d3.selectAll(".add")
.on("click", function() {
d3.selectAll(".message")
.each(function() {
d3.select(this)
.transition()
.duration(500)
.style("opacity", 1)
.text("added");
})
})
.wrapper {
display: inline-block;
margin: 50px;
width: 200px;
}
.wrapper div {
padding: 16px 32px;
background-color: grey;
color: #FFF;
font-family: sans-serif;
cursor: pointer;
text-align: center;
margin-bottom: 5px;
position: relative;
}
.wrapper span {
position: absolute;
right: -60px;
bottom: 10px;
background-color: lightblue;
color: black;
font-size: 12px;
padding: 8px 16px;
opacity: 0;
}
<script src="https://d3js.org/d3.v3.min.js"></script>
<div class="wrapper">
<div class="add">
Add
<span class="message"></span>
</div>
<div class="add">
Add
<span class="message"></span>
</div>
<div class="add">
Add
<span class="message"></span>
</div>
<div class="add">
Add
<span class="message"></span>
</div>
<div class="add">
Add
<span class="message"></span>
</div>
</div>
質問1:問題は '.each()'ではなく '.selectAll()'です。 ( '.select(this)')を選択してください。( '' selectAll( "。message") ') '.message'要素(' .select( "。message") ')を見つけてください。 – Andreas
@Andreasありがとう、それは意味があります。同時にすべてのメッセージが表示されなくなりますが、どのボタンがクリックされても---> https://jsfiddle.net/sol_b/sub9kw8d/1/ - 何が間違っているのか分かりません – sol
'.each()'は必要ありません。 select(this)) 'select(this)).select("。message ")' - https:// jsfiddleの子要素である '.message'要素を取得する必要があります。 .net/sub9kw8d/3/ – Andreas