To nie do końca tak działa, nie da się w ten sposób mieszać języków, bo one się gdzie indziej odpalają i w innym czasie.
Jak sobie odpalasz stronę w Polsce (czy w innym kraju, gdzie mieszkasz), to przeglądarka wysyła żądanie HTTP do serwera (który może być gdziekolwiek, np. w Niemczech), zadaniem serwera jest zwrócić wygenerowany plik HTML (albo CSS, JS, JSON czy cokolwiek innego). Do generowania tych plików serwer może skorzystać ze skryptu PHP (ale PHP się odpala tylko po stronie serwera, przeglądarka już nie widzi tego PHP, tylko sam wygenerowany przez niego plik).
<script>
function myFunction() {
document.getElementById("demo").innerHTML =
<?php
echo "cos";
?>;
}
</script>
Odpalając taki skrypt powodujesz tylko to, że skrypt PHP się odpali na serwerze i wynik zostanie dodany do generowanego kodu HTML. Czyli masz kawałek kodu HTML z załączonym tagiem <script>, który osadza JavaScript:
<script>
function myFunction() {
document.getElementById("demo").innerHTML =
zostanie dodane do niego cos
i bedziesz mial taki efekt
document.getElementById("demo").innerHTML = cos
Czyli w momencie, kiedy ten kod JS trafi do przeglądarki, to żadnego(!) PHPa już tam zwyczajnie nie będzie. Więc nie tędy droga.
Owszem, jak już przedmówca wspomniał, jest coś takiego jak AJAX i wtedy faktycznie możesz odpalić kod PHP (waląc jakieś zapytanie AJAXem), ale ten kod odpali się na serwerze, serwer może zwrócić odpowiedź, np. w popularnym formacie JSON i dopiero potem, kiedy dostaniesz zwrócone dane, to możesz je przetworzyć za pomocą JavaScriptu.
I tak się często robi. Pytanie tylko, czy w tym przypadku ci to potrzebne. Zastanów się, czy to, co chcesz zrobić nie da się zrobić za pomocą czystego JavaScriptu (co w ogóle chcesz zrobić, tak bardziej konkretnie? Co ma się stać po kliknięciu przycisku). Czy nie jest tak przypadkiem, że chcesz na siłę mieszać PHP dlatego, że jest to język, który lepiej znasz? (tylko, że to droga strasznie naokoło).