簡體   English   中英

無法讀取未定義的屬性“長度”-JavaScript

[英]Cannot read property 'length' of undefined - javascript

我想驗證字段。 當用戶未在字段中輸入任何內容並單擊“提交”按鈕時,將無法對其進行驗證。

演示

請參閱以下示例:

    $scope.validateFields = function(){
            alert("Comments " + $scope.comments); //When fields are blank and click on submit, it shows undefined
              if($scope.comments === 'undefined'){
                 alert("comments are blank");//not printed
                 $scope.comments = 'undefined';
            }
            if( $scope.comments.length == 0){
              alert("comments length is zero"); //not printed
              $scope.comments = 'undefined';
            }

在上面的示例代碼中,當單擊提交按鈕時未在注釋字段中輸入任何內容時,它沒有輸入if條件。 當評論字段為空並單擊提交按鈕時,我想分配$scope.comments='undefined'

使用下面的代碼。 您可以在加載控制器時初始化$ scope變量。

app.controller('myCtrl',function($scope,$http){

      $scope.validateFields = function(){
          if($scope.comments){
             alert("comments are blank");
        }
        if( $scope.comments.length == 0){
          alert("comments length is zero");
        }
//      alert("validate"+ $scope.comments.length); 
      } 

      function init() {
        $scope.comments = '';
      }

      init();


    });

檢查plunkr

第一個問題是您要檢查$ scope.comments是否與未定義的字符串匹配,而不是檢查當前是否在給定范圍內定義了它。

if($scope.comments === undefined) {
    alert("comments are blank");//not printed
    $scope.comments = '';
}

注意,我只是刪除了undefined周圍的引號來實現此目的。 您甚至可以為此使用速記來檢查該值是否為false。 您可以在線找到虛假值的完整列表,但其中有兩個是空字符串或未定義。

if(!$scope.comments) {
    alert("comments are blank");//not printed
    $scope.comments = '';
}

接下來,您可以通過僅使用如下注釋初始化$ scope來完全避免這種情況。

var app=angular.module("myApp",[]);
app.controller('myCtrl', function($scope,$http) {
    $scope.comments = '';

    $scope.validateFields = function() {
        alert("Comments " + $scope.comments);
        if(!$scope.comments){
            alert("comments are blank");
        }
        else {
            alert("comments exist");
        }
    }
});

檢查空值的最佳方法是

if ( testVar !== null )
{
    // do action here
}

對於未定義

if ( testVar !== undefined )
{
    // do action here
}

您可以分配一個帶有undefined的變量。

testVar = undefined;

請參考javascript中的falsey值

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM