Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Динамический JS: createElement и appendChild (https://javascript.ru/forum/events/28485-dinamicheskijj-js-createelement-i-appendchild.html)

rfxsx 21.05.2012 21:34

Динамический JS: createElement и appendChild
 
смысл в том чтобы на странице генерировались случайным каждый раз образом дивы, то есть допустим первый раз запускаешь в окне появляется 3 дива, в первом еще какое то количество, во втором еще какое-то тоже случайное, в третьем так же, во внутренних дивах появляются каждый раз случайным образом еще какое то количество дивов, так до тех пор пока они не станут меньше какого то размера, допустим 20 пикселей
и в каждом диве генерируеться случайное число


скрипт для генерации трех первых дивов написал а appenchild подключаться не хочет


<script type="text/javascript">


NumberOfDivsToRandomDisplay = 6;

var CookieName = 'DivRamdomValueCookie';
function DisplayRandomDiv() {
var r = Math.ceil(Math.random() * NumberOfDivsToRandomDisplay);
var v = r+1;
var w = v++;
if(NumberOfDivsToRandomDisplay > 1) {
var ck = 0;
var cookiebegin = document.cookie.indexOf(CookieName + "=");
if(cookiebegin > -1) {
cookiebegin += 1 + CookieName.length;
cookieend = document.cookie.indexOf(";",cookiebegin);
if(cookieend < cookiebegin) { cookieend = document.cookie.length; }
ck = parseInt(document.cookie.substring(cookiebegin,coo kieend));
}
while(r == ck) { r = Math.ceil(Math.random() * NumberOfDivsToRandomDisplay); }
document.cookie = CookieName + "=" + r;
}
for( var i=1; i<=NumberOfDivsToRandomDisplay; i++) {

document.getElementById("randomdiv"+i).style.displ ay='none';


}

var list = document.getElementById("randomdiv"+r).style.displ ay='block';
document.getElementById("randomdiv"+v).style.displ ay='block';
document.getElementById("randomdiv"+w).style.displ ay='block';
var fiv = document.createElement('div');
fiv.innerHTML = '1';
list.appendChild(fiv).style.display='block';
}
DisplayRandomDiv();




</script>

vadim5june 21.05.2012 22:16

если у Вас в head этот код то вместо
DisplayRandomDiv();
нужно
window.onload=function(){DisplayRandomDiv();}

rfxsx 21.05.2012 22:43

Изменений не произошло... хотелось бы конечно увидить работаюший скрипт на добавление рандомных дочерних дивов(

vadim5june 21.05.2012 23:02

само добавление достаточно просто и у Вас правильно написано-а с логикой и кукисами я не разбирался
window.onload=function(){
var d1=document.getElementById('tt');
var d=document.createElement('div');
d.innerHTML='1';
var d2=d1.appendChild(d);}

<body>
<div id=tt style='border:1px solid black;'>add me</div>

rfxsx 21.05.2012 23:24

возможно ли вообще написать код заного так чтобы с нуля создавались эти три элемента с рандомным тектом внутри а уж к ним подключать все .Просто мне кажеться я не от того отталкиваться начал...

vadim5june 22.05.2012 06:11

Цитата:

Сообщение от rfxsx (Сообщение 175871)
возможно ли вообще написать код заного так чтобы с нуля создавались эти три элемента с рандомным тектом внутри а уж к ним подключать все .Просто мне кажеться я не от того отталкиваться начал...

примерно вот так-только сделайте с position:absolute чтобы по экрану случайным образом разбрасывались
---------------------------------------
var cl=['red','green','blue','white'];
window.onload=function(){fr(200,document.body,0); return;
}
function fr(w,p,u){var n=2+parseInt(5*Math.random());
for(var i=0;i<n;i++){
var d=document.createElement('div');
d.innerHTML='1';
d.style.width=w+'px';
d.style.height=w+'px';
d.style.background=cl[u];
d.style.overflow='hidden';
p.appendChild(d);
var br=document.createElement('br');
p.appendChild(br);
var n1=parseInt(w/2);if(n1>10)fr(n1,d,u+1)
};
};

bes 22.05.2012 11:24

vadim5june, почему не используете bb-теги (html, js и лучше с run) при оформлении кода (через 10 сообщений уже профессором должны стать)??

vadim5june 22.05.2012 11:30

Цитата:

Сообщение от bes (Сообщение 175931)
vadim5june, почему не используете bb-теги (html, js и лучше с run) при оформлении кода (через 10 сообщений уже профессором должны стать)??

иногда использую
Если есть такая рекомендация для всех всегда использовать-буду использовать всегда-напишите плиз
Вобщем удобно согласен

bes 22.05.2012 11:37

Рекомендации нет, но код приятнее смотреть оформленным и лучше, чтобы была возможность сразу просмотреть его в действии.

bes 22.05.2012 11:52

Вот ваш более менее оформленный код.

<script>
var cl = ['red', 'green', 'blue', 'white'];

function fr(w, p, u) {
  var n = 2 + parseInt(5*Math.random());

  for (var i = 0; i < n; i++) {
    var d = document.createElement('div');
    d.innerHTML = '1';
    d.style.width = w + 'px';
    d.style.height = w + 'px';
    d.style.background = cl[u];
    d.style.overflow = 'hidden';
    p.appendChild(d);

    var br = document.createElement('br');
    p.appendChild(br);

    var n1 = parseInt(w/2);
    if (n1 > 10) fr(n1, d, u+1);
  }

}

window.onload = function() {
  fr(200, document.body, 0); 
  return;
}
</script>


Часовой пояс GMT +3, время: 22:53.