Как правильно прописать функцию во внешнем JS, вызываемую через onclick с html

Имеется кнопка для музыки, которая будет включать и выключать ее. Был скрипт в самом html и все работало, но для внешнего файла js нужно его переделывать. Попробовал изменить, но выдает такую ошибку: введите сюда описание изображения

Исходный код (пишу в adobe dreamweaver, но она не сообщает о проблеме):

function ChangeM(){   
document.getElementById("MyBut").innerHTML = "myaudio"
    
var myaudio = this.getAttribute("myaudio"); 
      if(myaudio.paused == true)
      {
        document.getElementById("myaudio").play();
             }
      else if (myaudio.paused == false)
      {
        document.getElementById("myaudio").pause();
      }
}
ChangeM();
<html>
<head>
<script src="js/Main.js"></script>  
</head> 
<body>

<div>
            
<button class="MusBut" id="MyBut" type="button" onclick="ChangeM()" >Click</button>
            
 <audio id="myaudio"> <source src="snd/erik-satie-gymnopedie-no-1.mp3" type="audio/mp3"/>
 </audio>
                        
</div>
    
</body>
</html>


Ответы (2 шт):

Автор решения: Oliver Patterson

Подключите ваш .js файл перед закрывающим тегом body. Или же добавьте атрибут "defer".

<script src="js/Main.js" defer></script>
→ Ссылка
Автор решения: Алексей Шиманский

function ChangeM(el) {
              // ^-----Добавить
  document.getElementById("MyBut").innerHTML = "myaudio"

  var myaudio = el.getAttribute("myaudio");
              // ^------------ Заменить
  if (myaudio.paused == true) {
    document.getElementById("myaudio").play();
  } else if (myaudio.paused == false) {
    document.getElementById("myaudio").pause();
  }
}

document.getElementById('MyBut').click();
//ChangeM(); ---Удалить
<html>

<head>
  <script src="js/Main.js"></script>
</head>

<body>

  <div>

    <button class="MusBut" id="MyBut" type="button" onclick="ChangeM(this)" myaudio="true">Click</button>
    <!-- Тут тоже пара изменений -->

    <audio id="myaudio"> <source src="snd/erik-satie-gymnopedie-no-1.mp3" type="audio/mp3"/>
 </audio>

  </div>

</body>

</html>

→ Ссылка