Javascript函数没有从html页面调用

时间:2013-09-17 02:54:05

标签: javascript php jquery html

我有一个javascript文件,我第一次运行时加载到页面上,有几个函数。无论如何,我试图从html页面调用那些函数,但它根本没有被调用。我不明白为什么。这就是我所做的。

Html部分

<?php /* SCRIPT AREA START */ ob_start(); ?>
<script src="<?php ECHO SITE_ROOT; ?>assets/js/client.js" type="text/javascript"></script>

<script type="text/javascript">
    $(document).ready(function(){

        client.displayMessage();

    });
</script>
<?php /* SCRIPT AREA END */ $data["scripts"] = ob_get_clean(); ?>

这是javascript部分

var client = (function(){
...
var displayMessage = function(){
alert("Hello");
//stage.showErrorModal("Hello people", "Yeah");
},
....
}

编辑:

var client = (function(){

    var socket, connected = false, typingArray = Array(), callWaitting, calling, callSound = null, onlineFriends = Array();

    init = function() {
        initializeSocketConnection();
    },

    initializeSocketConnection = function(){
        socket = io.connect(window.config.socket_server);


        socket.on('connect', onSocketConnect);
        socket.on('ready', onSocketReady);
        socket.on('inbox', sentMobileEvent);
    },
    onSocketConnect = function(){
        connected = true;
    },

    onSocketReady = function(){
        socket.emit('login', window.config.username, window.config.session_id, window.config.user_id, onLoginResponse);
    },
displayMessage = function(){
    alert("Hello");
    //stage.showErrorModal("Hello people", "Yeah");
    },
inbox=function(user_id){
    socket.emit("inbox", user_id);
    };

return {
        init: init,
        displayMessage: displayMessage,

    }

})();

client.init();

3 个答案:

答案 0 :(得分:0)

PHP代码最后一行的ob_get_clean()函数将:

因此,ob_start()ob_get_clean()之间的所有内容都将存储在$data["scripts"]已清除中,这意味着不会向浏览器发送任何内容。

ob_get_clean()之后添加以下行会将缓冲并清除的内容发送到浏览器:

 <?
 echo $data["scripts"];
 ?>

但是,如果您打算同时显示 备份<SCRIPT>内容,则可以使用ob_get_contents()代替。

修改

现在提供了完整的JavaScript源代码,我发现了一些语法错误。

您的部分功能以,结尾,应为;

init函数,例如(和其他函数),可以像这样修复:

init = function() {
    initializeSocketConnection();
}; // ends with ;

答案 1 :(得分:0)

您可以将var displayMessage更改为this.displayMessage,然后尝试。

var client = (function(){
...
this.displayMessage = function(){
alert("Hello");
//stage.showErrorModal("Hello people", "Yeah");
},
....
}

并确保客户端已实例化。

答案 2 :(得分:0)

当你使用client.displayMessage()时,你必须确保两件事: 1.client是一个Object或Array。 2.client有一个名为displayMessage的属性,它是一个函数。 显然,“var displayMessage”表示声明函数中的变量,而不是属性。 所以“client.displayMessage未定义”