Как добавить кнопку в класс div при загрузке из Javascript?

Для задания я не могу коснуться HTML-кода и редактирую внешний файл JS. Я должен отослать код к существующему классу и превратить его в кнопку для запуска скрипта.

Необходимо запустить на нагрузке, чтобы преобразовать элемент с заданным id в кнопку, которая также может запустить функцию по нажатию.

Так скажем, у нас есть id="bar"как мне это сделать?

Мой код не работает вообще.

document.getElementById("bar").onload = function () { myFunction() };

function myFunction() {
  document.getElementById("bar").innerHTML = "<button></button>";
}

5 ответов

Обновленный Codepen


Я думаю, что это немного, что вам нужно

var bar = document.getElementById('bar');

window.onload = function() {
  var barInner = bar.innerHTML;
  bar.innerHTML = '<button>' + barInner + '</button>';
}

bar.onclick = function() {
  alert("Hello\nHow are you?");
};
document.getElementById("bar").onload = myFunction();

  function myFunction() {
    document.getElementById("bar").innerHTML = "<button>Button</button>";
  }

Там вы идете!

Почему бы вам просто не выполнить свой сценарий, когда DOM готов? Для этого

document.addEventListener('DOMContentLoaded', function () { 
    document.getElementById("bar").innerHTML = "<button></button>";
}, false);

Не каждый элемент HTML имеет событие загрузки. Это касается только некоторых из них, таких как окно, изображение... и т. Д.
Посмотрите здесь на MDN, чтобы узнать больше об этом.

Вот простой фрагмент, решающий все, что вы упомянули.

window.addEventListener("load", () => {
  // you can put your entire script in here.
  
  var elt = document.getElementById("bar"),
    button = document.createElement("button");
  
  button.textContent = elt.textContent;
  button.onclick = callback;
  
  elt.textContent = '';
  elt.appendChild(button);
  
  function callback() {
    console.log("The button has been clicked");
  }
});
<div id="bar" style="background: beige; height: 2em">Click me</div>


В предыдущем фрагменте я добавляю кнопку в элемент. Но если дело действительно в том, чтобы превратить его в кнопку, то мы идем:

window.addEventListener("load", () => {
  // you can put your entire script in here.
  
  var elt = document.getElementById("bar"),
    container = elt.parentNode,
    button = document.createElement("button");
  
  button.id = elt.id; // if you want to keep the id
  button.textContent = elt.textContent;
  button.onclick = callback;
  
  container.removeChild(elt);
  container.appendChild(button);
  
  function callback() {
    console.log("The button has been clicked");
  }
});
<div style="background: #fee; height: 2em">
  <div id="bar" style="background: beige; height: 2em">Click me</div>
</div>

Вам просто нужна функция createElement. Это работает:

document.addEventListener("DOMContentLoaded", function(){
var button = document.createElement("button");
button.innerHTML = "This is a button";
// assuming the Div's ID is bar
var div = document.getElementById('bar');
div.appendChild(button);
//the following function will alert a window when the button is clicked
button.addEventListener ("click", function() {
    alert("Button was clicked");
    });

});
Другие вопросы по тегам