繁体   English   中英

无法从HTML页面调用Javascript函数

[英]Javascript function not being called from html page

我有一个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();

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 ;

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

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

并确保实例化客户端。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM