javascript
  • null
  • netsuite
  • 2017-01-03 130 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

    相關問題