javascript
  • null
  • netsuite
  • 2017-01-03 93 views 1 likes 
    1

    在SuiteScript中,我试图运行已保存的搜索,但出现错误“无法从null读取属性长度”。 见我的代码:无法从NULL读取属性“长度”

    if(search.length>0){ 
        layout += '<tr height="1cm">'; 
        layout += '</tr>'; 
        layout += '<tr>'; 
        layout += '<td align="right" border="0px" colspan="8" style=\"font-size:12px;\">'; 
        for(var x = 0;x<search.length;x++){ 
        layout += iE(search[x].getText('account'))+'<br/>'; 
        } 
        layout += '</td>'; 
        } 
    

    也是我尝试这个代码也不过同样的结果。

    if(search!==null %% search.length!==null){ 
          layout += '<tr height="1cm">'; 
    
          layout += '</tr>'; 
          layout += '<tr>'; 
          layout += '<td align="right" border="0px" colspan="8" style=\"font-size:12px;\">'; 
          for(var x = 0;x<search.length;x++){ 
           layout += iE(search[x].getText('account'))+'<br/>'; 
    
          } 
          layout += '</td>'; 
          } 
    
    +0

    尝试登录'search'安慰,看看它是什么 – zola

    +0

    你是什么意思?对不起新手在NetSuite – Rodel

    +1

    只是'如果(搜索)' –

    回答

    0

    你应该做的事:

    if(search!==null && search.length!==null){

    AND运算符&&

    也可以尝试 if(search && search.length>0){

    +0

    抱歉打字。但我试过那个。同样的结果:( – Rodel

    +0

    更新了答案..试试 –

    1

    尝试使用& &

    if(search!==null && search.length!==null){ 
    
    +0

    抱歉打错了,但是我试过了,结果如下:( – Rodel

    +0

    if(search!= null && search.length <1){ –

    1

    请替换%%&&(如@scarlet witch建议)并添加更多的上下文。

    我可以从你的问题推论出来,全局变量搜索在你的代码的某一点被设置为空,因为这是一个global variable很多事情可能是错误的,我建议使用Chrome DevTools并检查发生了什么。

    请更新您的问题,以便我们能够提供帮助。

    0

    只需使用:if(search)

    注意,使用!=====手段,JavaScript的检查既类型的变量和值的(Strict Equality

    实例:

    var search = ""; 
    
    search !== null; //true 
    search.length !== null; //true 
    search.length === "0"; //false 
    search.length === 0; //true 
    
    1

    我假设你想检查它是否是数组

    function isArray(obj){ 
        return !!obj && Array === obj.constructor; 
    } 
    

    ,并用它在if语句像

    if(isArray(search)){ 
        // implementation 
    } 
    

    我不知道为什么你检查search.length !== null如果你想检查是否存在数组元素或不应该由search.length >=0检查。

    ArrayVar.length从不为空,除非您明确设置了ArrayVar.length = null。它默认为0。

    1

    当执行到达此行时,可能会发现搜索未定义。尝试使用

    if(typeof search !== "undefined" && search.length!==null){ 
    
    0

    你是如何填充search变量的?它应该是搜索的结果吗?

    nlapiSearchRecord返回null当您的搜索没有匹配结果时。

    检查这个最简单的方法就是一样的东西:

    if (search && (search.length > 0)) { 
        // Process results 
    } 
    

    ,我跟着每当我与搜索和结果的工作是创建一个执行搜索一个的图样,始终返回数组和另一个包含用于处理单个搜索结果的逻辑的函数。

    function doSearch() { 
        var filters = [...]; 
        var columns = [...]; 
        // The `|| []` clause ensures we always return an array, never null 
        return nlapiSearchRecord(recordType, null, filters, columns) || []; 
    } 
    
    function processResult(result) { 
        // Process a single result 
    } 
    
    // Run search and process all results 
    doSearch().map(processResult); 
    

    您可以在此处详细了解处理nullhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/null

    相关问题