Этот скрипт удаляет весь текст с моей кнопки и делает ее зеленым блоком.
function playSound(soundfile) {
document.getElementById("musicButton").innerHTML =
"<embed src=\"" + soundfile + "\" hidden=\"true\" autostart=\"true\" loop=\"false\" />";
}<button id = "musicButton" class = "button" type = "button" name = "music" onmouseover = "playSound('MySong.wav')">Hover Me For Sick Beats!</button>Установка свойства .innerHTML элемента (в данном случае вашей кнопки) приведет к перезаписывать его содержимому.
Я новичок в js, поэтому не совсем понимаю ..
Вы берете кнопку с текстом и заменяете этот текст аудиоэлементом. Не делай этого. Положи его в другое место.
Хорошо, спасибо за совет!



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Это избавляет от необходимости иметь какой-либо элемент HTML.
function playSound(soundfile) {
var audio = new Audio(soundfile);
audio.play();
}<button id = "musicButton" class = "button" type = "button" name = "music" onmouseover = "playSound('MySong.wav')">Hover Me For Sick Beats!</button>
Я считаю, что в корне это неправильно. Не устанавливайте встраивание как внутренний HTML-код кнопки. Почему бы не обернуть кнопку элементом контейнера, а затем скрыть кнопку и добавить ее в родительскую оболочку?