Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

100
Vistas
Change the Page layout when a button is clicked

I want to change the layout of a page that has 3 columns:

<div>
    <div class="container">
      <div class="row" >
        <div class="col-md-4"></div>
        <div class="col-md-4"></div>
        <div class="col-md-4"></div>
      </div>
    </div>
  </div>

... to 4 columns when a button is clicked:

<div>
    <div class="container">
      <div class="row" >
        <div class="col-md-3"></div>
        <div class="col-md-3"></div>
        <div class="col-md-3"></div>
        <div class="col-md-3"></div>
      </div>
    </div>
  </div>

I have no clue on how to do this.

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

There are many ways you can add another div. Here is my approach :

function appendDiv(){
  let row = document.getElementsByClassName('row');
//   change className for all the col-md-4 div
  document.querySelectorAll('.col-md-4').forEach(function(item) {
   item.className = 'col-md-3';
  })
  //create new div;
  let col = document.createElement('div');
//   add classname to div
  col.className = "col-md-3"
  row[0].appendChild(col)
}
    .col-md-4{
  border : 1px solid blue;
      height : 20px;
}
    .col-md-3{
       border : 1px solid green;
      height : 20px;
    }
 <div>
    <div class="container">
      <div class="row" >
        <div class="col-md-4"></div>
        <div class="col-md-4"></div>
        <div class="col-md-4"></div>
      </div>
      <button onClick='appendDiv()'>click</button>
    </div>
  </div>

about 4 years ago · Juan Pablo Isaza Denunciar

0

There's a few ways this could be done depending on your data, however, here's one angle.

If you have both your 4 column & 3 column versions of the data loaded on the page (but one hidden with css). You could run something like this.

HTML

<div id="colsThree" class="displayArea show">
  <div class="container">
    <div class="row" >
      <div class="col-md-4"></div>
      <div class="col-md-4"></div>
      <div class="col-md-4"></div>
    </div>
  </div>
</div>

<div id="colsFour" class="displayArea">
  <div class="container">
    <div class="row" >
      <div class="col-md-4"></div>
      <div class="col-md-4"></div>
      <div class="col-md-4"></div>
    </div>
  </div>
</div>

<button id="changeColumns">Click Me To Change Columns</button>

Javascript

const buttonEl = document.querySelector("#changeColumns");

buttonEl.addEventListener('click', () => {
  const outputEls = document.querySelectorAll('.displayArea')
  outputEls.forEach((outputEl) => {
    outputEl.toggle("show")
  })
});

CSS

.displayArea {
  display: none;
}

.displayArea.show {
  display: block;
}
about 4 years ago · Juan Pablo Isaza Denunciar

0

Use forEach and appendChild method.

const btn = document.querySelector('#btn')

btn.onclick = function() {
const targetClasses = document.querySelectorAll('.col-md-4')
targetClasses.forEach((tag, idx) => {
tag.className = 'col-md-3'

const lastIdx = targetClasses.length - 1
if (idx === lastIdx) {
const tag = document.createElement('div')
, row = document.querySelector('.row')
tag.className = 'col-md-3'
tag.innerText = '4'
row.appendChild(tag)
}
})

console.log(targetClasses)

return
}
<div>
<button id="btn">Click me</button>
    <div class="container">
      <div class="row" >
        <div class="col-md-4">1</div>
        <div class="col-md-4">2</div>
        <div class="col-md-4">3</div>
      </div>
    </div>
  </div>

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda