Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / D3js заменяется текст / 2 сообщений из 2, страница 1 из 1
19.03.2018, 13:20
    #39616763
nikomp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
D3js заменяется текст
Подскажите, если кто имел дело с библиотекой D3.
Нужно по клику рисовать кружки и выводить в них текст. Делаю так:

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
<script>

var svg=d3.select("body").append("svg")
	.attr("width", 960)
    .attr("height", 500)
	
var events = []
svg.on('click',function () {
	// Получим название блока
	nameblock=document.getElementById('idnameblock');
	if (nameblock.value=="") {
		alert("Пусто");
		return;
	}

	
	//alert('xxxxxx');
	
	events.push(d3.event)
	
	var elem = svg.selectAll("myCircleText").data(events)
	
	var elemEnter = elem.enter()
	    .append("g")
		.attr("class","myCircleText")
	    .attr("transform", function(d) {
          return "translate(" + function (d) { return d.x || d.pageX } + "," + function (d) { return d.y || d.pageY } + ")";
      });
	  
	  
	var circle = elemEnter.append("circle")
					.attr("cx", function (d) { return d.x || d.pageX })
					.attr("cy", function (d) { return d.y || d.pageY })
					.attr("r", 40)
					.attr("stroke", "black")
					.attr("stroke-width", "2")
					.attr("fill", "white"); 

	elemEnter.append("text")
	     .attr('x', function (d) { return d.x-10 || d.pageX-10 }) // задание координат элемента text
		 .attr('y', function (d) { return d.y || d.pageY })
	     .text(function(d){return nameblock.value})	
	
	nameblock.value=""; // Очистим поле	
})	
	
	
</script>



но при каждом новом щелчке, текст во всех кружках заменяется, не соображу как реализовать привязку текста к конкретному кружку.
...
Рейтинг: 0 / 0
20.03.2018, 08:52
    #39617209
nikomp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
D3js заменяется текст
разобрался сам, вот так:

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
<script>

var svg=d3.select("body").append("svg")
	.attr("width", 960)
    .attr("height", 500)

var data = [];	
	
	
var events = []
svg.on('click',function () {
	// Получим название блока
	nameblock=document.getElementById('idnameblock');
	if (nameblock.value=="") {
		alert("Пусто");
		return;
	}

	
	//alert('xxxxxx');
	
	events.push(d3.event)
	
	data.push({
		x: d3.event.x,
		y: d3.event.y,
		name: nameblock.value
	})
	
	var elem = svg.selectAll("myCircleText").data(data)
	
	var elemEnter = elem.enter()
	    .append("g")
		.attr("class","myCircleText")
	    .attr("transform", function(d) {
          return "translate(" + function (d) { return d.x || d.pageX } + "," + function (d) { return d.y || d.pageY } + ")";
      });
	  
	  
	var circle = elemEnter.append("circle")
					.attr("cx", function (d) { return d.x || d.pageX })
					.attr("cy", function (d) { return d.y || d.pageY })
					.attr("r", 40)
					.attr("stroke", "black")
					.attr("stroke-width", "2")
					.attr("fill", "white"); 

	elemEnter.append("text")
	     .attr('x', function (d) { return d.x-10 || d.pageX-10 }) // задание координат элемента text
		 .attr('y', function (d) { return d.y || d.pageY })
	     .text(function(d){return d.name})	
	
	nameblock.value=""; // Очистим поле	
})	
	
	
</script>
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / D3js заменяется текст / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]