每个循环返回未定义的结果

时间:2014-04-17 11:58:10

标签: javascript jquery

console.log(data)输出:

Object {pid: 1, sibof: "140522864XGHA", naziv: "Kovačič Jože", avrsta: "Televizija"}

当我尝试输出单个值时,它会返回 undefined

if (data) {

    console.log(data);

    var s_stnaloga;
    var s_sibof;
    var s_stranka;
    var s_blago;
    var count = 0;

    $.each(data, function (i, e) {


        s_stnaloga = e.pid;
        s_sibof = e.sibof;
        s_stranka = e.naziv;
        s_blago = e.avrsta;

        count++;

    });

    console.log(s_sibof);
    console.log(count);

} else {

    console.log('no results');
}

完成控制台输出:

Object {pid: 1, sibof: "140522864XGHA", naziv: "Kovačič Jože", avrsta: "Televizija"} 
undefined
4

2 个答案:

答案 0 :(得分:4)

使用each,您可以使用i作为键并以e作为值来迭代对象拥有的属性:

$.each(data, function(i, e) {
    // 'i' will have keys, i.e. '"pid"', '"sibof"', etc.
    // 'e' will have values, i.e. '1', '"140522864XGHA"', etc.
});

...结果count最后为4(按data对象中的属性数量)。

但是,由于data是一个对象本身(不是一个对象数组!),而你只是从中选择了属性值,所以你根本不应该使用each

s_stnaloga = data.pid;
s_sibof = data.sibof;
s_stranka = data.naziv;
s_blago = data.avrsta;

答案 1 :(得分:0)

由于data是单个对象,而不是数组,因此您不需要循环。

var s_stnaloga = data.pid;
var s_sibof = data.sibof;
var s_stranka = data.naziv;
var s_blago = data.avrsta;