Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.04.2017, 20:50
Новичок на форуме
Отправить личное сообщение для Рустам Гибадуллин Посмотреть профиль Найти все сообщения от Рустам Гибадуллин
 
Регистрация: 19.04.2017
Сообщений: 4

Задача, вывести от 20 до 1000 кругов
По условиям нужно вывести от 20 до 1000 кругов отрисованных с помощью svg. Цвет, координаты по Х и Y, радиус от 5 до 10 рх генерируется случайно, все эти условия я выполнил, не могу придумать как вывести не 1 а заданное число элементов.
<!DOCTYPE HTML>
<html>
  <head>
    <meta charset = "utf-8">
    <link rel = "stylesheet" href = "style.css">
	<!--<script src = "js.js"></script>-->
  </head>
  
  <body id = "body">
       <div id = "block1">
	     <div id = "block2">
		    <div id = "svg">
				<svg  width = "850" height = "500">
				   <circle id = "bubble" r = 5 cx = "450" cy = "250" fill = "gold" />					
				</svg>
			</div>
                
				<button id = "show_bubble" >Замостить</button>

var showBubble = document.getElementById(show_bubble);	   
	    document.write(showBubble);
	    var numBubbles = numOfBubbles();
	 
	    function numOfBubbles(){       //генерируем количество пузырьков
		   var min = 20;
		   var max = 1000; 
	       for (var i = 0; i < 1  ; i++){
		      randomNumber = Math.floor(Math.random() * (max - min +1)) + min;	   
		      }
		   
		   return randomNumber;
	    
		}

	   for (var i = 0; i < numBubbles; i++){
		var s = display(10);

		function display(theBubbles){
		
		var theBubbles = document.getElementById("bubble");
        var radius = theBubbles.getAttribute("r");
		var color = theBubbles.getAttribute("fill");
	    var axisX = theBubbles.getAttribute("cx");
		var axisY = theBubbles.getAttribute("cy");

		
		var arrColors = ["gold", "green","blue", "crimson", "plum", "lime", "silver", "skyblue"  ];
		
		function randomColor(min, max){ 
	   
		   randomNumber = Math.floor(Math.random() * (max - min +1)) + min;							 
		   return randomNumber;
		                
		}

        function randomWidth(){        // координата по Х
	       var maxX = 850;
		   var minX = 0;
		   randomWidth = Math.floor(Math.random() * (maxX - minX + 1)) + minX;							 
		   return randomWidth;
		                
		}	
        
        function randomHeight(){      // координата по Y
	       var maxY = 600;
		   var minY = 0;
		    randomHeight = Math.floor(Math.random() * (maxY - minY + 1)) + minY;							 
		   return randomHeight;
		                
		}		
		
		
		function generateOfBubbles(){      //генерируем радиус пузырьков				  
	       var min = 5;
		   var max = 10;	   
		      
			  randomNumber = Math.floor(Math.random() * (max - min +1)) + min;
              return randomNumber;							 
		                
		}
		
		var min = 0;
		var max = arrColors.length - 1;
		var numColor = randomColor(min,max);
		theBubbles.setAttribute("fill",arrColors[numColor]);	
		var valWidth = randomWidth();
		theBubbles.setAttribute("cx", valWidth);	
		var valHeight = randomHeight();
		theBubbles.setAttribute("cy", valHeight);
		var valRadius = generateOfBubbles();		
		theBubbles.setAttribute("r", valRadius);
		
    }
	    
	}

</div>
			
	 </div>
  </body>
</html>
Ответить с цитированием
  #2 (permalink)  
Старый 19.04.2017, 22:36
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

svg random circle
Рустам Гибадуллин,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>
</head>

<body>
<svg  width = "850" height = "500">
<circle id = "bubble" r = 5 cx = "450" cy = "250" fill = "gold" />
</svg>
<button id = "show_bubble" >Замостить</button>
   <script>
window.addEventListener("DOMContentLoaded", function() {
    var container = document.querySelector("svg");
    var btn = document.querySelector("#show_bubble");
    var width = +container.getAttribute("width");
    var height = +container.getAttribute("height");
    function rnd(min, max) {
        return min + Math.random() * (max + 1 - min) | 0
    }

    function createSVG() {
        var attr = {
            r: rnd(5, 10),
            "cx": rnd(0, width),
            "cy": rnd(0, height),
            "fill": "#" + (Math.random() * 16777216 | 16777216).toString(16).substr(1)
        };
        var newuse = document.createElementNS("http://www.w3.org/2000/svg", "circle");
        Object.keys(attr).forEach(function(k) {
            newuse.setAttributeNS(null,
                k, attr[k])
        });
        container.appendChild(newuse)
    }
    btn.addEventListener("click", function () {
        [].forEach.call( container.querySelectorAll('circle'), function(el) {
             container.removeChild(el)
        });
        var num = rnd(20, 1000);
        while (num--) createSVG()
    })
});
  </script>
</body>
</html>

Последний раз редактировалось рони, 19.04.2017 в 23:46.
Ответить с цитированием
  #3 (permalink)  
Старый 19.04.2017, 23:33
Новичок на форуме
Отправить личное сообщение для Рустам Гибадуллин Посмотреть профиль Найти все сообщения от Рустам Гибадуллин
 
Регистрация: 19.04.2017
Сообщений: 4

А как сделать так, чтобы при повторном нажатии на замостить генерировалось все заново, а не накладывалось?
Ответить с цитированием
  #4 (permalink)  
Старый 19.04.2017, 23:47
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от Рустам Гибадуллин
генерировалось все заново
добавлено строка 41 пост №2
Ответить с цитированием
  #5 (permalink)  
Старый 20.04.2017, 00:11
Новичок на форуме
Отправить личное сообщение для Рустам Гибадуллин Посмотреть профиль Найти все сообщения от Рустам Гибадуллин
 
Регистрация: 19.04.2017
Сообщений: 4

Рони, большое спасибо. А тот способ которым я делал совсем плох?
Ответить с цитированием
  #6 (permalink)  
Старый 20.04.2017, 00:50
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Рустам Гибадуллин,
... лучше для svg, использовать методы svg setAttributeNS createElementNS и по возможности избегать document.write ...
Ответить с цитированием
  #7 (permalink)  
Старый 20.04.2017, 08:48
Новичок на форуме
Отправить личное сообщение для Рустам Гибадуллин Посмотреть профиль Найти все сообщения от Рустам Гибадуллин
 
Регистрация: 19.04.2017
Сообщений: 4

Спасибо за совет)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с информационым таймером Александр2233 Javascript под браузер 21 11.12.2019 12:31
Помогите с кодом. Поиск и вывод нужного значения Sav2907 Элементы интерфейса 30 17.09.2015 16:54
Как вывести на экран содержимое тега ср1251 Общие вопросы Javascript 15 30.09.2013 20:39
Помогите исправить баг Alexandr_21 Элементы интерфейса 4 17.04.2012 16:50
Как привести в движение таймер Freedman Элементы интерфейса 3 08.06.2011 13:17