Создайте изображение с появлением appendChild под кнопкой html для html-проекта

#javascript

Вопрос:

В принципе, то, что делает этот код, — это создает обезьяну по щелчку мыши. Однако у меня есть проблема с этим, потому что, когда я нажимаю, кнопка перемещается вниз, потому что, когда обезьяна генерирует, она перемещается вправо от кнопки. Изображение обезьяны больше, чем кнопка, поэтому нажимайте кнопку вниз. Я не уверен, как заставить обезьяну появляться на определенном расстоянии сверху или создавать икру под кнопкой.

 <input type="button" value="MONKE BUTTON" id="countButton" />
Monke button was pressed - <span id="displayCount">0</span> - times. 
</div>

<script>
var count = 0;
var countButton = document.getElementById("countButton");
var displayCount = document.getElementById("displayCount");
countButton.onclick = function(){
  count  ;
  displayCount.innerHTML = count;

}

const button = document.querySelector('input[type="button"]');
button.addEventListener('click', event => {
    

   const othermonke = document.createElement("img");
   othermonke.src = "./monke.jpg";
   othermonke.width = "200";
   othermonke.height = "200";
   othermonke.alt = "alttext";

   button.parentElement.appendChild(othermonke);
});
    </script>
 

Ответ №1:

Вместо добавления <img> элементов button.parentElement , соответствующих родительскому <div> контейнеру, просто создайте другой контейнер для добавления сгенерированных изображений, чтобы они всегда появлялись под кнопкой. Когда вы используете appendChild родительский элемент buttons, он добавляет ваши <img> » s » в конец родительского контейнера. Что делает <input> элемент и текст смежными со всеми изображениями в HTML,

 <div>
  <input type="button" value="MONKE BUTTON" id="countButton" />
  Monke button was pressed - <span id="displayCount">0</span> - times.
  <img src="./monke.jpg" width="200" height="200" alt="alttext">
  <img src="./monke.jpg" width="200" height="200" alt="alttext">
  ..
</div>
 

Поэтому, когда создается новое изображение, оно помещается справа от кнопки и текста в одной строке. Если ширина окна просмотра мала, изображения будут перенесены на следующую строку под кнопкой, когда ширина окна просмотра большая, изображения будут отображаться справа от кнопки/текста, заполняющего страницу, пока содержимое не достигнет конца и не перейдет на следующую строку. Чтобы упростить задачу, просто создайте новый элемент <div class="images"> в родительском контейнере для добавления сгенерированных изображений.

Таким образом, вы можете создать новый элемент уровня блока, который всегда начинается с новой строки и занимает всю доступную ширину (растягивается влево и вправо, насколько это возможно).

 var count = 0;
var countButton = document.getElementById("countButton");
var displayCount = document.getElementById("displayCount");
countButton.onclick = function(){
  count  ;
  displayCount.innerHTML = count;

}

const button = document.querySelector('input[type="button"]');
button.addEventListener('click', event => {
    
   const images = document.querySelector(".images");
   const othermonke = document.createElement("img");
   othermonke.src = "https://emojipedia-us.s3.dualstack.us-west-1.amazonaws.com/thumbs/160/microsoft/74/monkey_1f412.png";
   othermonke.width = "200";
   othermonke.height = "200";
   othermonke.alt = "alttext";

   images.appendChild(othermonke);
}); 
 .images {
  margin: 1rem auto;
  display: flex;
  align-items: center;
  flex-wrap: wrap;
}

.images img {
  max-width: 100%;
  width: auto;
  height: auto;
  margin: .5rem 0;
} 
 <div class="parent">
  <input type="button" value="MONKE BUTTON" id="countButton" />
  Monke button was pressed - <span id="displayCount">0</span> - times.
  <div class="images"></div>
</div> 

Комментарии:

1. @CharlieO Не стесняйтесь отмечать мой ответ как принятый, если он решил вашу проблему.

Ответ №2:

Если ваша проблема связана с выравниванием, то вы можете применить vertical-align:top к своей кнопке и тексту, как показано ниже. Так что он всегда будет выровнен сверху.

 var count = 0;
var countButton = document.getElementById("countButton");
var displayCount = document.getElementById("displayCount");
countButton.onclick = function(){
  count  ;
  displayCount.innerHTML = count;

}

const button = document.querySelector('input[type="button"]');
button.addEventListener('click', event => {
    

   const othermonke = document.createElement("img");
   othermonke.src = "https://emojipedia-us.s3.dualstack.us-west-1.amazonaws.com/thumbs/160/microsoft/74/monkey_1f412.png";
   othermonke.width = "50";
   othermonke.height = "50";
   othermonke.alt = "alttext";

   button.parentElement.appendChild(othermonke);
}); 
 #countButton, #contenSpan {
vertical-align:top;
} 
 <div>
<input type="button" value="MONKE BUTTON" id="countButton" />
<span id="contenSpan">Monke button was pressed - <span id="displayCount">0</span> - times. </span>
</div>