2016-07-22 124 views
0

我正在制作一个应该从某个数据库检索数据的程序,列出放在同一个div中的按钮上的一些数据,并用按钮onclick形成新的div,直到达到某个最大值。为了让这个例子对其他人有用,我没有从DB中检索数据,而是使用了一些常规数字(值5被分配给变量levmax,并且每个for循环都有一些指定值,但是所有这些值都应该从D B)。彼此相邻的多个DIV

我遇到的问题是如何把所有的DIV放在一起。我在这里找到的所有示例都解释了如何在代码的HTML部分中创建对齐。但我想在JS部分创建我的DIV。

代码工作正常,除了所有DIV彼此相邻的部分。代码有80行,但我需要的是如何对齐DIV。这里是代码:

<html> 
<head> 
<script> 
var lev = 0; 
var levmax=5; 
var count = 0; 
function addBu(){ 
     lev++; 
     var bo = document.getElementById("kod"); 
     var di = document.createElement('DIV'); 
     for (var i=0; i<3; i++){ 
      var bu= document.createElement('BUTTON'); 
      var te = document.createTextNode('Text'); 
      if(lev===1){ 
      bu.addEventListener("click", novo); 
      } 
      var te1 = document.createTextNode(lev.toString()); 
      var br = document.createElement('BR'); 
      bu.id=lev.toString(); 
      bu.appendChild(te); 
      bu.appendChild(te1); 
      di.appendChild(bu); 
      di.appendChild(br); 
      count++; 
     } 

     bo.insertBefore(di, bo.childNodes[0]); 
}; 

function novo(){ 
    if(lev===1){ 
     lev++; 
     var bo = document.getElementById("kod"); 
     var di = document.createElement('DIV'); 
     for (var i=0; i<4; i++){ 
      var bu= document.createElement('BUTTON'); 
      var te = document.createTextNode('Text'); 
      var te1 = document.createTextNode(lev.toString()); 
      var br = document.createElement('BR'); 
      bu.addEventListener("click", repeat); 
      bu.id=lev.toString(); 
      bu.appendChild(te); 
      bu.appendChild(te1); 
      di.appendChild(bu); 
      di.appendChild(br); 
      count++; 
     } 

     bo.insertBefore(di, bo.childNodes[0]); 
    } 
    function repeat(){ 
     if(lev<levmax){ 
      lev++;  
      var bo = document.getElementById("kod"); 
      var di = document.createElement('DIV'); 
      for (var i=0; i<2; i++){ 
       var bu= document.createElement('BUTTON'); 
       var te = document.createTextNode('Text'); 
       var te1 = document.createTextNode(lev.toString()); 
       var br = document.createElement('BR'); 
       bu.addEventListener("click", repeat); 
       bu.id=lev.toString(); 
       bu.appendChild(te); 
       bu.appendChild(te1); 
       di.appendChild(bu); 
       di.appendChild(br); 
       count++; 
      } 
      bo.insertBefore(di, bo.childNodes[0]); 
      var le=(lev-1).toString(); 
      document.getElementById(le).removeEventListener("click", repeat); 
     } 
    } 

} 
</script> 
</head> 
<body id="kod" onload="addBu()"> 
</body> 
</html>enter code here 

<head> 
<script> 
var lev = 0; 
var levmax=5; 
var count = 0; 
function addBu(){ 
     lev++; 
     var bo = document.getElementById("kod"); 
     var di = document.createElement('DIV'); 
     for (var i=0; i<3; i++){ 
      var bu= document.createElement('BUTTON'); 
      var te = document.createTextNode('Text'); 
      if(lev===1){ 
      bu.addEventListener("click", novo); 
      } 
      var te1 = document.createTextNode(lev.toString()); 
      var br = document.createElement('BR'); 
      bu.id=lev.toString(); 
      bu.appendChild(te); 
      bu.appendChild(te1); 
      di.appendChild(bu); 
      di.appendChild(br); 
      count++; 
     } 

     bo.insertBefore(di, bo.childNodes[0]); 
}; 

function novo(){ 
    if(lev===1){ 
     lev++; 
     var bo = document.getElementById("kod"); 
     var di = document.createElement('DIV'); 
     for (var i=0; i<4; i++){ 
      var bu= document.createElement('BUTTON'); 
      var te = document.createTextNode('Text'); 
      var te1 = document.createTextNode(lev.toString()); 
      var br = document.createElement('BR'); 
      bu.addEventListener("click", repeat); 
      bu.id=lev.toString(); 
      bu.appendChild(te); 
      bu.appendChild(te1); 
      di.appendChild(bu); 
      di.appendChild(br); 
      count++; 
     } 

     bo.insertBefore(di, bo.childNodes[0]); 
    } 
    function repeat(){ 
     if(lev<levmax){ 
      lev++;  
      var bo = document.getElementById("kod"); 
      var di = document.createElement('DIV'); 
      for (var i=0; i<2; i++){ 
       var bu= document.createElement('BUTTON'); 
       var te = document.createTextNode('Text'); 
       var te1 = document.createTextNode(lev.toString()); 
       var br = document.createElement('BR'); 
       bu.addEventListener("click", repeat); 
       bu.id=lev.toString(); 
       bu.appendChild(te); 
       bu.appendChild(te1); 
       di.appendChild(bu); 
       di.appendChild(br); 
       count++; 
      } 
      bo.insertBefore(di, bo.childNodes[0]); 
      var le=(lev-1).toString(); 
      document.getElementById(le).removeEventListener("click", repeat); 
     } 
    } 

} 
</script> 
</head> 
<body id="kod" onload="addBu()"> 
</body> 
</html> 

回答

2

使用CSS!比方说,对每个项目的HTML组件包含<div>有一个类名.item

.item { 
    width: 300px; 
    padding: 20px; 
    float: left; 
} 

将调整所有<div>的与类名item并排侧。

实际上有很多方法可以做到这一点。下面是一个例子使用自举:

<head> 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" /> 
</head> 
<body> 
    <div class="container"> 
     <div class="row"> 
      <div class="db-item col-md-4"> 

      </div> 
      <div class="db-item col-md-4"> 

      </div> 
      <div class="db-item col-md-4"> 

      </div> 
     </div> 
    </div> 
</body> 

,然后用你的JavsScript技能,插入新</div><div class="row">,每当你想一个。在这种情况下,每3件物品都是理想的。

1

您可以在此处使用弹性盒。

/*The container div*/ 
.flex_container { 
    display: flex; /* This will make the div as flexible container*/ 
    flex-flow: row wrap; // the shortcut for flex-direction: row/column; and flex-wrap:wrap; 
    /* Other styles ...*/ 
} 
/*for generated divs*/ 
.flex_item { 
    /*your styles*/ 
} 

您可以在https://css-tricks.com/snippets/css/a-guide-to-flexbox/

了解更多关于Flex盒