在javascript函数没有定义 [英] function in javascript is not defined

查看:130
本文介绍了在javascript函数没有定义的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这个js及以下qunit测试。为什么浏览器给我的listClasses没有定义?如何解决这个问题。我看到大多做

 函数阿贾克斯(){
$阿贾克斯({
});}
 

但是,如果我不喜欢下面怎么做测试?

  $('#MregisteredClasses')。在('pageinit',功能listClasses(){
变种rowInput =1;
变种pageInput =1;

$阿贾克斯({
    网址:http://137.57.1​​02.146:8080/Training/getRegisteredClassesData.html,
    数据:({行:rowInput,页:pageInput}),
    键入:POST,

    成功:函数(json_results){
    $('#列表)追加('< UL数据角色=列表视图数据插入=真正的< / UL>');
        listItems中的= $('#名单)发现(UL)。
        $每个(json_results.rows,功能(键){
            HTML =<李数据迷你='真正的'ID ='图标'>< A HREF =HTTP:?//137.57.1​​02.146:8080 /培训/ MRegisteredClassesDetail.phone courseId =
                   + json_results.rows [关键] .courseId] +&放大器; REGNO =+ json_results.rows [关键] .regNo] +
                   '相对='外部'>中+ json_results.rows [关键] .courseName +< / A>中
                   +< A HREF =HTTP://137.57.1​​02.146:8080 /培训/ MRateCourse.phone courseId =?
                   + json_results.rows [关键] .courseId] +&放大器; REGNO =+ json_results.rows [关键] .regNo] +
                   '相对='外部'>年率此课程< / A>< /李>中;
            listItems.append(HTML);
        });

        $('#名单UL)的列表视图()。
    },
});
});
 

这是qunit测试

 测试(异步测试',函数(){
//暂停的考验,失败,如果开始()一秒钟后不叫
停止();

listClasses(函数(){
    // ...异步断言
    OK(真实的,成功);
});

的setTimeout(函数(){
    开始();
},2000);
});
 

解决方案

$('#MregisteredClasses')。在('pageinit',功能listClasses(){... 是不正确的用法。

该函数或者必须是匿名的(即删除 listClasses 位),在这种情况下运行 listClasses()将失败。

您需要做的是外化的函数声明。

即:

 函数listClasses(){
  变种rowInput =1;
  变种pageInput =1;

  $阿贾克斯({
    网址:http://137.57.1​​02.146:8080/Training/getRegisteredClassesData.html,
    数据:({行:rowInput,页:pageInput}),
    键入:POST,

    成功:函数(json_results){
    $('#列表)追加('< UL数据角色=列表视图数据插入=真正的< / UL>');
        listItems中的= $('#名单)发现(UL)。
        $每个(json_results.rows,功能(键){
            HTML =<李数据迷你='真正的'ID ='图标'>< A HREF =HTTP:?//137.57.1​​02.146:8080 /培训/ MRegisteredClassesDetail.phone courseId =
                   + json_results.rows [关键] .courseId] +&放大器; REGNO =+ json_results.rows [关键] .regNo] +
                   '相对='外部'>中+ json_results.rows [关键] .courseName +< / A>中
                   +< A HREF =HTTP://137.57.1​​02.146:8080 /培训/ MRateCourse.phone courseId =?
                   + json_results.rows [关键] .courseId] +&放大器; REGNO =+ json_results.rows [关键] .regNo] +
                   '相对='外部'>年率此课程< / A>< /李>中;
            listItems.append(HTML);
        });

        $('#名单UL)的列表视图()。
    }
});
}
 

然后调用从上的功能命令:

  $('#MregisteredClasses')。在('pageinit',listClasses)
 

假设你的脚本只失败了 listClasses(),那么我会假设 listClasses 名字只是下降悄无声息。

i have this js and qunit test below. why the browser gave me the listClasses is not defined? How to solve it. I saw mostly did

function ajax() {  
$.ajax({   
});}

but if i did like below how to do the test?

$('#MregisteredClasses').on('pageinit', function listClasses(){
var rowInput = "1";
var pageInput = "1";

$.ajax({
    url: 'http://137.57.102.146:8080/Training/getRegisteredClassesData.html',
    data: ( {rows : rowInput , page : pageInput}),
    type: 'POST',

    success: function(json_results){
    $('#list').append('<ul data-role="listview" data-inset="true"</ul>');
        listItems = $('#list').find('ul');
        $.each(json_results.rows, function(key) {
            html = "<li data-mini='true' id='icon'><a href='http://137.57.102.146:8080/Training/MRegisteredClassesDetail.phone?courseId=" 
                   + [json_results.rows[key].courseId] + "&regNo=" + [json_results.rows[key].regNo] +
                   "' rel='external'>" + json_results.rows[key].courseName+ "</a>"
                   + "<a href='http://137.57.102.146:8080/Training/MRateCourse.phone?courseId=" 
                   + [json_results.rows[key].courseId] + "&regNo=" + [json_results.rows[key].regNo] + 
                   "' rel='external'>RATE THIS COURSE</a></li>" ; 
            listItems.append(html); 
        });

        $('#list ul').listview(); 
    },
});
});

and this is qunit test

 test('asynchronous test', function() {  
// Pause the test, and fail it if start() isn't called after one second  
stop();  

listClasses(function() {  
    // ...asynchronous assertions  
    ok(true, "Success"); 
});  

setTimeout(function() {  
    start();  
}, 2000);  
});  

解决方案

$('#MregisteredClasses').on('pageinit', function listClasses(){ ... is incorrect usage.

The function either needs to be anonymous (i.e. drop the listClasses bit) in which case running listClasses() will fail.

What you need to do is externalise the function declaration.

i.e.:

function listClasses(){
  var rowInput = "1";
  var pageInput = "1";

  $.ajax({
    url: 'http://137.57.102.146:8080/Training/getRegisteredClassesData.html',
    data: ( {rows : rowInput , page : pageInput}),
    type: 'POST',

    success: function(json_results){
    $('#list').append('<ul data-role="listview" data-inset="true"</ul>');
        listItems = $('#list').find('ul');
        $.each(json_results.rows, function(key) {
            html = "<li data-mini='true' id='icon'><a href='http://137.57.102.146:8080/Training/MRegisteredClassesDetail.phone?courseId=" 
                   + [json_results.rows[key].courseId] + "&regNo=" + [json_results.rows[key].regNo] +
                   "' rel='external'>" + json_results.rows[key].courseName+ "</a>"
                   + "<a href='http://137.57.102.146:8080/Training/MRateCourse.phone?courseId=" 
                   + [json_results.rows[key].courseId] + "&regNo=" + [json_results.rows[key].regNo] + 
                   "' rel='external'>RATE THIS COURSE</a></li>" ; 
            listItems.append(html); 
        });

        $('#list ul').listview(); 
    }
});
}

Then call the function from the on command:

$('#MregisteredClasses').on('pageinit', listClasses)

Assuming your script only failed on listClasses(), then I would assume that the listClasses name is just dropped silently.

这篇关于在javascript函数没有定义的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆