powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / D3js заменяется текст
2 сообщений из 2, страница 1 из 1
D3js заменяется текст
    #39616763
nikomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, если кто имел дело с библиотекой 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
D3js заменяется текст
    #39617209
nikomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
разобрался сам, вот так:

Код: 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
2 сообщений из 2, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / D3js заменяется текст
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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