簡體   English   中英

在.php頁面上使用外部.js文件

[英]Using external .js files on a .php page

index.php中的以下代碼可以工作,並且在test.js中定義的test()可以在瀏覽器中生成所需的警報:

<?php 
    #include ('db.php');
    #$dataBase = new PDO("mysql:host=$dbHost;dbname=$dbName", $dbUser, $dbPass);    
    #PREPARE AND TRY    
    #$statement = $dataBase->query('SELECT * FROM users');
    #$rowCount = $statement->rowCount();
    #echo 'There are currently ' . $rowCount . ' rows in the database'; 
?>
<HTML>
    <HEAD>
        <meta charset="utf-8">
        <TITLE>title</TITLE>
        <script type="text/javascript" src="jquery-2.1.1.min.js"></script>
        <script type="text/javascript" src="ui/jquery-ui/jquery-ui.min.js"></script>
        <script type="text/javascript" src="test.js"></script>
        <link rel="stylesheet" type="text/css" href="test.css" />
        <link rel="stylesheet" href="ui/jquery-ui/jquery-ui.min.css" /> 
        <link rel="stylesheet" href="styles/jquery-ui-config.css" />        
    </HEAD>
    <BODY>

        <div id = 'clickablebutton'>Button</div>

        <script>
        $(document).ready(function(){
            //console.log('self invoke on document ready');
            $('#clickablebutton').click(function(){
                test();  //alerts "it works"
            });
        </script>
    </BODY>
</HTML>

但是,當我刪除<script>標記中的所有內容並將onclick屬性添加到<div> ,如下所示:

<div id = 'clickablebutton' onclick='test()'>Button</div>

該代碼不再起作用-未運行test()函數,但未產生任何錯誤。

為什么?

UPD:

  1. test()函數在test.js中
  2. test.js中的代碼:

    var test = function(){alert('Works!');
    };

該線程中有一個帖子,由於某種原因被刪除。 建議在HTML中明確聲明javascript:test()

完成div的html:

<div id = 'clickablebutton' onclick='javascript:test()'>Button</div>

這解決了問題,並且現在顯然已正確引用了外部.js。

這是我學到的非常有價值的東西!

在DOM准備就緒之前,可能不會加載外部.js文件。 所以找不到測試功能

您應該使用jquery ready調用,或者如果由於某種原因無法使用jquery ready,請使用jQuery.holdReady()。 參考

$.holdReady( true );
$.getScript( "test.js", function() {
  $.holdReady( false );
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM