Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

99
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda