提问者:小点点

AppendChild除了另一个元素


我是JS的新手-所以我要求第一手的道歉。

我正在使用appendchild创建一个简单的div。 此操作由按钮执行。 问题是,每次我按下按钮,它会在前一个方块下面创建一个新的方块--而不是除此之外。 除了它,我还怎么创作?

<html>
    <head>
        <title>RocketSeat - Challenge 1</title>
    </head>
    <body>
        <button onclick="MakeSquare()" style="margin-top: 100px;">Make a square</button>

    </body>
    <script>
        function MakeSquare(){
            const square = document.createElement('div')
            const elementBody = document.querySelector('body')
            square.style.backgroundColor ='red'
            square.style.width = '50px'
            square.style.height = '50px'
            square.style.marginTop= '50px'
            square.style.border = '1px solid red'
            elementBody.appendChild(square)
        }

    </script>
</html>

共2个答案

匿名用户

似乎是CSS(样式)问题,请尝试以下步骤:

null

<html>

<head>
  <title>RocketSeat - Challenge 1</title>
</head>

<body>
  <button onclick="MakeSquare()" style="margin-top: 100px;">Make a square</button>

</body>
<script>
  function MakeSquare() {
    const square = document.createElement('div')
    const elementBody = document.querySelector('body')
    square.style.backgroundColor = 'red'
    square.style.width = '50px'
    square.style.height = '50px'
    square.style.marginTop = '50px'
    square.style.border = '1px solid red'
    square.style.display = 'inline-block' // added display styling
    elementBody.appendChild(square)
  }
</script>

</html>

匿名用户

这是一个造型问题。 在此方案中,将样式与代码分离可能会更干净。 你可以通过给它一个类来做到这一点。 我还会命令在方块周围提供一个包装器,以便更好地控制布局。 然后,您可以通过在包装器上为它提供css变量来进一步改进定制,这样您就可以在需要时控制它的样式。 下面是一个例子:

null

const setup = () => {
  makeSquare();
  makeSquare();
  makeSquare();
  
  changeSquareColorToPink();
  changeSquareDefaultColorToBlue();
}


function makeSquare() {
  const square = document.createElement('div');
  const squareWrapper = document.querySelector('.square-wrapper');
  square.classList.add('square');
  squareWrapper.appendChild(square)
}

function changeSquareColorToPink() {
    const square = document.querySelector('.square:nth-child(1)');
  square.style.setProperty('--square-color', 'pink');
}

function changeSquareDefaultColorToBlue() {
    const squareWrapper = document.querySelector('.square-wrapper');
  squareWrapper.style.setProperty('--square-color', 'blue');
}

window.addEventListener('load', setup)
.bt_makeSquare {
  margin-top: 6em;
}
.square-wrapper {
  --square-color: red;
  --square-size: 50px;
  margin-top: 2em;
}
.square {
  margin: 1em;
  display: inline-block;
  width: var(--square-size);
  height: var(--square-size);
  box-sizing: border-box;
  border: 1px solid var(--square-color);
  background-color: var(--square-color);
}
<button class="bt_makeSquare" onclick="makeSquare()">Make a square</button>
<div class="square-wrapper"></div>