Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.08.2021, 12:30
Профессор
Отправить личное сообщение для _marisha Посмотреть профиль Найти все сообщения от _marisha
 
Регистрация: 18.05.2018
Сообщений: 170

Добавление div в конец div
Доброго времени суток!
Необходимо c помощью js в div добавить другой div.
Как сейчас:
<div class="board">
      <div class="row__letter">
        <div class="cell__number">8</div>
        <div class="cell__number">7</div>
      </div>
      <div class="row" id="0">
        <div class="cell"></div>
        <div class="cell"></div>
      </div>
      <div class="row" id="1">
        <div class="cell"></div>
        <div class="cell"></div>
      </div>
    </div>

Как нужно (в конец .board добавить row__letter)
<div class="board">
      <div class="row__letter">
        <div class="cell__number">8</div>
        <div class="cell__number">7</div>
      </div>
      <div class="row" id="0">
        <div class="cell"></div>
        <div class="cell"></div>
      </div>
      <div class="row" id="1">
        <div class="cell"></div>
        <div class="cell"></div>
      </div>
      <div class="row__letter">
        <div class="cell__number">8</div>
        <div class="cell__number">7</div>
      </div>
    </div>


В начало row__letter добавлен след образом:
let board = document.querySelector('.board')
  let rowOne = document.createElement('div')
  rowOne.className = 'row__letter'
  board.append(rowOne)


В конец пытаюсь добавить так, но добавляет либо до первого row__letter, либо после него. А необходимо именно в конце board :
let rowEnd = document.createElement('div') //создаем новый элемент
  rowEnd.className = 'row__letter'
  board.prepend(rowEnd)//или append
Ответить с цитированием
  #2 (permalink)  
Старый 18.08.2021, 12:37
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,592

У тебя, очевидно, порядок вызовов где-то перепутан. append добавляет в конец, prepend в начало, никакой магии.
Просто row ты добавляешь уже после того как добавлены оба row__letter, и, очевидно, не между ними, а в конец.

P.S. id не может начинаться на цифру.
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 18.08.2021, 12:40
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,144

_marisha,
что не так?
<!DOCTYPE html>

<html>
<head>
    <title>Untitled</title>
    <meta charset="utf-8">
    <style type="text/css">.row__letter {
        background-color: #FF0000;
        height: 5px;
    }

    </style>

    <script>
document.addEventListener( "DOMContentLoaded" , function() {
    let board = document.querySelector('.board');
    let rowOne = document.createElement('div');
    rowOne.className = 'row__letter';
    board.append(rowOne);
    let rowEnd = document.createElement('div');
    rowEnd.className = 'row__letter';
    board.prepend(rowEnd);

  });
    </script>
</head>

<body>
<div class="board">
            <div class="row" id="0">
                <div class="cell">0</div>
                <div class="cell">0</div>
            </div>
            <div class="row" id="1">
                <div class="cell">1</div>
                <div class="cell">1</div>
            </div>
</div>


</body>
</html>
Ответить с цитированием
  #4 (permalink)  
Старый 18.08.2021, 12:51
Профессор
Отправить личное сообщение для _marisha Посмотреть профиль Найти все сообщения от _marisha
 
Регистрация: 18.05.2018
Сообщений: 170

Сообщение от Aetae Посмотреть сообщение
У тебя, очевидно, порядок вызовов где-то перепутан. append добавляет в конец, prepend в начало, никакой магии.
Просто row ты добавляешь уже после того как добавлены оба row__letter, и, очевидно, не между ними, а в конец.

P.S. id не может начинаться на цифру.
- осталось сообразить каким в настройке порядка (видимо всё перепутано)

function сhessBoard() {
  let board = document.querySelector('.board')

  let row //строка
  let cell //столбец

  let number = [8, 7, 6, 5, 4, 3, 2, 1]
  let alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']

  //добавление первой строки
  let rowOne = document.createElement('div')
  rowOne.className = 'row__letter'
  board.append(rowOne)

  //добавление последней строки
  let rowEnd = document.createElement('div')
  rowEnd.className = 'row__letter'
  board.prepend(rowEnd)

  for (let i = 0; i < 8; i++) {
    //создание дива в строке
    row = document.createElement('div')
    row.className = 'row'
    row.id = 'x' + i

    //добавление в первую строку ячеек
    let cellNumber = document.createElement('div')
    cellNumber.className = 'cell__number'
    cellNumber.innerText = number[i]

    board.append(row)
    rowOne.append(cellNumber)

    for (let j = 0; j < 8; j++) {
      cell = document.createElement('div')

      cell.className = 'cell'

      row.append(cell)
    }
  }
}
сhessBoard()


По поводу id - спасибо, скорректировано
Ответить с цитированием
  #5 (permalink)  
Старый 18.08.2021, 12:57
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,144

_marisha,
что хотим сделать?
Ответить с цитированием
  #6 (permalink)  
Старый 18.08.2021, 13:01
Профессор
Отправить личное сообщение для _marisha Посмотреть профиль Найти все сообщения от _marisha
 
Регистрация: 18.05.2018
Сообщений: 170

Сообщение от рони Посмотреть сообщение
_marisha,
что хотим сделать?
- спасибо что откликнулись Пытаюсь на шахматной доске вывести по краям цифры и буквы
Ответить с цитированием
  #7 (permalink)  
Старый 18.08.2021, 13:36
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,144

шахматная доска
_marisha,
<!DOCTYPE html>
<html>

<head>
    <title>Untitled</title>
    <meta charset="utf-8">
    <style type="text/css">
        .board {
            margin: 0;
            padding: 0;
        }

        .row {
            display: flex;
            margin: 0;
            padding: 0;
        }

        .row>div {
            height: 15px;
            width: 15px;
            box-sizing: border-box;
            text-align: center;
        }

        .row .cell {
            border: 1px solid#FF0000;
        }
    </style>
    <script>
        document.addEventListener("DOMContentLoaded", function() {
            function сhessBoard() {
                let board = document.querySelector('.board');

                let row;
                let cell;

                let number = [8, 7, 6, 5, 4, 3, 2, 1];
                let alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']

                let div = document.createElement('div');
                number.forEach(num => {
                    row = div.cloneNode();
                    row.className = 'row';
                    cell = div.cloneNode();
                    cell.textContent = num;
                    cell.className = 'cell__number';
                    row.append(cell)
                    cell = alphabet.map(_ => (cell = div.cloneNode(), cell.className = 'cell', cell));
                    row.append(...cell);
                    board.append(row)
                })
                row = div.cloneNode();
                row.className = 'row';
                cell = div.cloneNode();
                row.append(cell)
                cell = alphabet.map(letter => (cell = div.cloneNode(), cell.className = 'cell__letter', cell.textContent = letter, cell));
                row.append(...cell);
                board.append(row)
            }
            сhessBoard()
        });
    </script>
</head>

<body>
    <div class="board"></div>
</body>

</html>
Ответить с цитированием
  #8 (permalink)  
Старый 18.08.2021, 14:56
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,763

<!DOCTYPE HTML>
<html>
<head>
    <title>Untitled</title>
    <meta charset="utf-8">
    <style>
    .row, .row_letter {
       display: flex;
     }
  
    .row>div, .row_letter>div {
        box-sizing: border-box;
        height : 30px;
        width: 30px;
        text-align: center;
    }
     .cell {
        border: 1px solid black;
    </style>
 
    <script>
document.addEventListener( "DOMContentLoaded" , function() {

function сhessBoard() {
  let board = document.querySelector('.board')
 
  let number = [8, 7, 6, 5, 4, 3, 2, 1]
  let alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
  
 // Создаем строку с буквами
 
  let rowLet = document.createElement('div')
  rowLet.className = 'row_letter'
  let d = document.createElement('div');
  rowLet.append (d)
  alphabet.forEach(l => {
    let dc = d.cloneNode();
    dc.textContent = l;
    rowLet.append(dc)
  })
  
  //добавление первой строки с буквами
  
  rowLet.append(d.cloneNode())
 
  board.append(rowLet)
  
  //  Создание строки ячеек
  
  let rowCell = document.createElement('div')
  rowCell.className = 'row';
  
  // Заполням строку ячеек
  
  let cell = document.createElement('div');
  cell.className = 'cell';
  for (let i = 0; i < 10; i++) rowCell.append(cell.cloneNode());
  rowCell.firstChild.className = rowCell.lastChild.className = 'cell_number';
 
 // Заполняем доску строками ячеек 
 
  number.forEach((n, i) => {
    let rw = rowCell.cloneNode(true);
    rw.firstChild.textContent = rw.lastChild.textContent = n;
    rw.id = 'x' + i;
    board.append(rw)   
  })
  
// Последняя строка с буквами
  board.append(rowLet.cloneNode(true))
}
сhessBoard()
})
</script>
</head>
<body>
<div class='board'>
</div>
</body>
<html>
Ответить с цитированием
  #9 (permalink)  
Старый 18.08.2021, 15:56
Аватар для SuperZen
Профессор
Отправить личное сообщение для SuperZen Посмотреть профиль Найти все сообщения от SuperZen
 
Регистрация: 08.11.2017
Сообщений: 641

с автоплэй есть нюансы:

https://developer.chrome.com/blog/autoplay/

https://developer.mozilla.org/en-US/...feature_policy
Ответить с цитированием
  #10 (permalink)  
Старый 18.08.2021, 16:19
Профессор
Отправить личное сообщение для _marisha Посмотреть профиль Найти все сообщения от _marisha
 
Регистрация: 18.05.2018
Сообщений: 170

voraa, Отличное решение, спасибо
Хотелось конечно разобраться, возможно ли подобное реализовать на приложенном мною коде, а то до Вашего примера еще далеко.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
добавление картинки или видео по клику в div Dmitriy154 Общие вопросы Javascript 12 16.01.2017 14:50
Добавление идентификаторов для div BARABANTEMO Общие вопросы Javascript 12 21.09.2015 09:02
Добавление border на IMG при наведении на div Thisishappi jQuery 4 17.05.2014 14:10
Javascript добавление div элемента 203 Элементы интерфейса 1 21.04.2013 16:04
div в конец полосы прокрутки vladimircape Events/DOM/Window 1 03.05.2012 03:11