无法从null读取属性'length'

时间:2017-01-03 04:18:41

标签: javascript null netsuite

在SuiteScript中,我正在尝试运行已保存的搜索但我收到错误“无法从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>';
            }

7 个答案:

答案 0 :(得分:1)

尝试使用&amp;&amp;

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

答案 1 :(得分:1)

请将%%替换为&&(如@scarlet女士建议的那样)并添加更多内容。

我可以从你的问题中推断出全局变量搜索在你的代码的某个点被设置为null,因为这是一个global variable很多东西在这里可能是错的,我建议使用{{3并检查发生了什么。

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

答案 2 :(得分: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。

答案 3 :(得分:1)

执行到达此行时,可能是未定义搜索。尝试使用

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

答案 4 :(得分:0)

你应该这样做:

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

AND运算符为&&

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

答案 5 :(得分:0)

只需使用:if(search)

请注意,使用!=====表示,JavaScript会检查变量和值的类型。(Strict Equality

<强>示例:

var search = "";

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

答案 6 :(得分:0)

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

当您的搜索没有匹配结果时,

nlapiSearchRecord会返回null

检查这个的最简单方法就是:

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

每当我处理搜索和结果时,我遵循的模式是创建一个执行搜索的函数并始终返回一个数组,另一个函数包含处理单个搜索结果的逻辑。

function findRecords() {
    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
findRecords().map(processResult);

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