2017-08-11 100 views
1

我曾经使用PHP打印我的数据表。当我到了一个字符串大于17个字符的特定列,我会用下面的17字符后打印椭圆:如果数据长度大于特定长度,jquery datatable

if(strlen($row[tli]) > 17){echo "<td><a href='#'>".substr(row['number'],0,17)."..."</a></td>";} 

我需要做什么用ajax不是一回事。

$('#example1').DataTable({  
    "ajax": { 
    "url": "api/displayQnams.php", 
    "type": "POST", 
    "dataSrc": '' 
    }, 
    "columns": [ 
    { 
     "data": "number", 
     "fnCreatedCell": function (nTd, sData, oData, iRow, iCol) 
     { 
     if(oData.number.length > 17) // here is where the initial check starts 
     {$(nTd).html("<a href='#'>'"+oData.number+"...'</a>")} // here is where it should print the ellipses after the 17th character 
     else 
     {$(nTd).html("<a href='#'>'"+oData.number+"'</a>"} 
     } 
    } 
    ] 
}); 

oData.number.length让我在控制台以下错误:

Cannot read property 'length' of undefined 

我缺少什么,使这项工作?

预先感谢您。

回答

1

问题是一些oData为空,并且您无法使用长度比较空值。所以我创建了一个变量,如果oData.number为null,则将该变量设置为“'。

这是我如何得到它的工作:

"fnCreatedCell": function (nTd, sData, oData, iRow, iCol) 
{ 
    if(oData.tli == null || oData.tli == ""){var tlinumber = '';} 
    else{var tlinumber = oData.tli;} 
    if(tlinumber.length > 17) 
    { 
    $(nTd).html("<a href='#'>'"+tlinumber.substring(0, 17)+"...'</a>") 
    } 
    else 
    { 
    $(nTd).html("<a href='#'>'"+tlinumber+"'</a>" 
    } 
}