innerHTML не работает с Bootstrap 4.21 - PullRequest
0 голосов
/ 08 января 2019

Мне нужно отобразить 4 столбца и обнаружил, что он работает только тогда, когда на странице написан полный HTML, но при использовании innerHTML он не работает должным образом. Я сделал 2 образца, вот тот, который работает хорошо:

<div class="padding">
  <div class="row-col">
    <div class="row m-b">

      <div class="col-md-3">
        <a href="javascript:void(0);" onclick="#">
          <div class="box">
            <div class="box-header blue-grey-50">
              <h3>Box Header1</h3>
            </div>
            <div class="box-body">
              <p class="m-a-0">Lorem ipsum</p>
            </div>
          </div>
        </a>  
      </div>
      <div class="col-md-3">
        <a href="javascript:void(0);" onclick="#">
          <div class="box">
            <div class="box-header blue-grey-50">
              <h3>Box Header2</h3>
            </div>
            <div class="box-body">
              <p class="m-a-0">Lorem ipsum</p>
            </div>
          </div>
        </a>  
      </div>
      <div class="col-md-3">
        <a href="javascript:void(0);" onclick="#">
          <div class="box">
            <div class="box-header orange-300">
              <h3>Box Header3</h3>
            </div>
            <div class="box-body">
              <p class="m-a-0">Lorem ipsum</p>
            </div>
          </div>
        </a>  
      </div>          


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

и тот же, но с использованием innerHTML:

<div class="padding">
  <div class="row-col">
    <div class="row m-b">

      <div id="data_div"</div>         

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


<script type="text/javascript">   
$(document).ready(function(data){ 
  var data = ''+
      '<div class="col-md-3">'+
      '  <a href="javascript:void(0);" onclick="#">'+
      '    <div class="box">'+
      '      <div class="box-header blue-grey-50">'+
      '        <h3>Box Header1</h3>'+
      '      </div>'+
      '      <div class="box-body">'+
      '        <p class="m-a-0">Lorem ipsum</p>'+
      '      </div>'+
      '    </div>'+
      '  </a>  '+
      '</div>'+
      '<div class="col-md-3">'+
      '  <a href="javascript:void(0);" onclick="#">'+
      '    <div class="box">'+
      '      <div class="box-header blue-grey-50">'+
      '        <h3>Box Header2</h3>'+
      '      </div>'+
      '      <div class="box-body">'+
      '        <p class="m-a-0">Lorem ipsum</p>'+
      '      </div>'+
      '    </div>'+
      '  </a>'+  
      '</div>'+
      '<div class="col-md-3">'+
      '  <a href="javascript:void(0);" onclick="#">'+
      '    <div class="box">'+
      '      <div class="box-header orange-300">'+
      '        <h3>Box Header3</h3>'+
      '      </div>'+
      '      <div class="box-body">'+
      '        <p class="m-a-0">Lorem ipsum</p>'+
      '      </div>'+
      '    </div>'+
      '  </a>'+  
      '</div>';

      document.getElementById('data_div').innerHTML = data;                
}); 

второй не отображает 4 столбца и вопрос - почему бы и нет?

Спасибо.

1 Ответ

0 голосов
/ 08 января 2019

Прежде всего, возникает ошибка <div id="data_div"</div> тег не закрыт. Кроме того, это дочерний элемент .row m-b. удалите этот div и поместите ID в родительский.

Это потому, что .col-md-3 должны быть потомками .row, добавление <div id="data_div"></div> становится потомком .row, и все в этом (#data_div) не является строкой.

См. Этот код ниже для id="data_div": https://codepen.io/StudioKonKon/pen/jXpbPL

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8" />
  <title>test NOT OK</title>
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimal-ui" />
  <meta http-equiv="X-UA-Compatible" content="IE=edge">

  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.2.1/css/bootstrap.css" type="text/css" />

</head>
<body>
  <div>

    <div class="padding">
      <div class="row-col">
        <div class="row m-b" id="data_div">       

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

    </div>

  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.2.1/js/bootstrap.bundle.min.js"></script>

  <script type="text/javascript">   
    $(document).ready(function(data){ 
      var data = ''+
          '<div class="col-md-3">'+
          '  <a href="javascript:void(0);" onclick="#">'+
          '    <div class="box">'+
          '      <div class="box-header blue-grey-50">'+
          '        <h3>Box Header1</h3>'+
          '      </div>'+
          '      <div class="box-body">'+
          '        <p class="m-a-0">Lorem ipsum</p>'+
          '      </div>'+
          '    </div>'+
          '  </a>  '+
          '</div>'+
          '<div class="col-md-3">'+
          '  <a href="javascript:void(0);" onclick="#">'+
          '    <div class="box">'+
          '      <div class="box-header blue-grey-50">'+
          '        <h3>Box Header2</h3>'+
          '      </div>'+
          '      <div class="box-body">'+
          '        <p class="m-a-0">Lorem ipsum</p>'+
          '      </div>'+
          '    </div>'+
          '  </a>'+  
          '</div>'+
          '<div class="col-md-3">'+
          '  <a href="javascript:void(0);" onclick="#">'+
          '    <div class="box">'+
          '      <div class="box-header orange-300">'+
          '        <h3>Box Header3</h3>'+
          '      </div>'+
          '      <div class="box-body">'+
          '        <p class="m-a-0">Lorem ipsum</p>'+
          '      </div>'+
          '    </div>'+
          '  </a>'+  
          '</div>';
          
          document.getElementById('data_div').innerHTML = data;                
    }); 
  </script> 

</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...