Ich versuche, eine Javascript-Funktion von PHP aufzurufen. Nach all den Beispielen, die ich mir angesehen habe, sollte das Folgende funktionieren, aber es funktioniert nicht. Warum nicht?

 <?php
    echo "function test";
    echo '<script type="text/javascript">    run();      </script>';
?>

<html>
    <script type="text/javascript">
        function run(){
            alert("hello world");
        }
    </script>
</html>
8
user1334130 10 Okt. 2012 im 09:57

3 Antworten

Beste Antwort

Ihr HTML ist ungültig. Ihnen fehlen einige Tags.

Und Sie müssen die Funktion aufrufen, nachdem sie wie folgt deklariert wurde

<html>
    <head>
       <title></title>

       <script type="text/javascript">
            function run(){
                alert("hello world");
            }

           <?php
               echo "run();";
           ?>
       </script>

    </head>
    <body>
    </body>
</html>

In diesem Fall können Sie den Lauf vor der Methodendeklaration platzieren. Sobald Sie den Methodenaufruf jedoch in ein anderes Skript-Tag einschließen, muss das Skript-Tag nach der Methodendeklaration stehen.

Versuchen Sie es mit http://jsfiddle.net/qdwXv/

16
Upvote 10 Okt. 2012 im 06:06

Wie andere vorgeschlagen haben, muss die Funktion zuerst deklariert werden. Wenn Sie jedoch zuerst das JavaScript von PHP aus wiedergeben müssen, können Sie es entweder in einer PHP-Variablen speichern, um es später wiederzugeben, oder Ihren Code warten lassen, bis der Dom zuerst geladen ist ...

document.ready = function() {
    run()
  }

Wenn Sie jQuery oder ein anderes Framework verwenden, haben sie wahrscheinlich eine bessere Möglichkeit, dies zu tun ... In jQuery:

$(function(){
   run();
})
0
Thom Porter 10 Okt. 2012 im 06:15

Die Funktion muss vor der Verwendung deklariert werden
es sollte sein

<html>
    <script type="text/javascript">
        function run(){
            alert("hello world");
        }
       <?php
       echo "function test";
        echo   run();      ;
     ?>
    </script>
</html>
4
NullPoiиteя 10 Okt. 2012 im 06:02