从没有eval()的另一个JavaScript文件调用函数

时间:2016-09-02 11:32:15

标签: javascript php jquery

我有一个项目有两个同名文件,data.php和data.js.我试图在list.js中运行data.js中的函数,这是项目中的另一个文件。

下面的代码显示了我尝试过的三种不同的尝试,但没有一种尝试。第一个抛出一个错误,说data.php中的conditionTemplate没有函数。另外两个抛出错误Uncaught TypeError:无法读取未定义的属性'condtionTemplate'。

list.js

if (this.filter == "correct") {
    window["condtionTemplate"](true);
    window["data"]["condtionTemplate"](true);
    window["data.js"]["condtionTemplate"](true);
}

这是我试图进入data.js

的功能

data.js

list = new listFiler();
list.prototype.condtionTemplate = function(status) {
    if (status) {
        main_buttons.enabled("next", false);
    } else {
        main_buttons.enabled("back", true);
    }
}

data.php

<body>    
    <script src="javascript/list.js?1" type="text/javascript"></script>
    <script src="javascript/data.js?1" type="text/javascript"></script>
</body>

2 个答案:

答案 0 :(得分:1)

首先将加载顺序更改为

<script src="javascript/data.js?1" type="text/javascript"></script>
<script src="javascript/list.js?1" type="text/javascript"></script>

将原型添加到函数listFiler

listFiler.prototype.condtionTemplate = function(status) {
    if (status) {
        main_buttons.enabled("next", false);
    } else {
        main_buttons.enabled("back", true);
    }
};

使用实例

var list = new listFiler();

使用condtionTemplate。

if (this.filter == "correct") { 
    list.condtionTemplate(true);
}

答案 1 :(得分:0)

HTML:

<script src="data.js" />
<script src="list.js" />
<script>
   condtionTemplate() ...
</script>