0

billItemsjqueryで呼び出された配列があり、次のような値があります。

[TUTION FEE ,SPORTS FEE ,CONVOCATION FEE ]

billItems重複を避けるために、新しいアイテムを追加する前に繰り返しています。

for (var i = 0; i < billItems.length; i++) {
    var name = billItems[i];

    if (name == feesItem.ItemName) {  //here ItemName=TUTION FEE
        var validItem = 'False'
    }
}

上で述べたように、ItemNameasを渡しTUTION FEEますが、文字列を比較せず、コントロールは同じでもブロックに入りません。このクエリの何が問題になっていますか、誰かがここで私を助けてくれますか....

次のようなhtmlテーブルにデータを追加しているだけです

var feesItem = new Object();

  feesItem.ItemName     = $("#txtItemName").val();
  feesItem.Amount       = $("#txtAmount").val();

$("#BillTable > tbody").find("tr:gt(0)").remove();
  for (var i = 0; i < feesItemList.length; i++) {  
tab = "<tr><td>" + " <span class='bid'>" + feesItem[i].ItemName + " </span>
       </td><td>" + feesItem[i].Amount + "</td></tr>";

          $("#BillTable > tbody").append(tab);
}

それでも値を比較していません...

forループ内の値を次のように比較してみました。

 var billItems = [];
  $(".bid").each(function () {
      billItems.push($(this).text());
  });

 var validItem = ($.inArray(feesItem[i].ItemName, billItems) < 0);
4

5 に答える 5

3

使用$.inArray():

var billItems = ['TUITION FEE', 'SPORTS FEE', 'CONVOCATION FEE'];
var validItem = ($.inArray(ItemName, billItems) < 0);
于 2012-05-28T13:08:44.337 に答える
1

私はここで手足に行き、あなたの弦は見た目とまったく同じではないと推測します. 比較を次のように変更してみてください。

if ($.trim(name) == $.trim(feesItem.ItemName)) {

これにより、比較前に両方の引数から末尾または先頭のスペースが削除されます。それが役立つことを願っています。

于 2012-05-28T14:09:56.117 に答える
1

これには jQuery の inArray 関数を使用できます。

ドキュメントは次のとおりです。 http://api.jquery.com/jQuery.inArray/

そして、これを使用する方法を示すコードを次に示します。

var myArray = ['TUTION FEE' ,'SPORTS FEE' ,'CONVOCATION FEE' ];
var itemName = 'SPORTS FEE';
var nonExistentItemName = 'OTHER FEE';
var isValid = false;

if($.inArray(itemName, myArray) == -1){
    isValid = true;
}

alert(isValid);

isValid = false;

if($.inArray(nonExistentItemName, myArray) == -1){
    isValid = true;
}

alert(isValid);

そして、それを示すための jsFiddle があります: http://jsfiddle.net/sPeem/

于 2012-05-28T13:11:37.423 に答える
1

var validItem = false に関する @Rory McCrossan のコメントに注意してください

また、string と string または int と int を比較していることを確認してください。JavaScript は、値の型を相互比較するときに false-y 値を与える可能性があります。

余談ですが、コードを書き直す方法は

//Search for a specified value within an array and return its index (or -1 if not found).
var index = jQuery.inArray(ItemName, billItems);

var validItem = index > -1;
于 2012-05-28T13:11:46.863 に答える
1

これを試して:

validItem = true;

for(var i = 0; i < billItems.length; i++) {
    var name = billItems[i];

    if(name == ItemName) { 
       validItem = false;
       break;
    }
}

if(validItem){
  billItems.push(ItemName);
}
于 2012-05-28T13:13:41.153 に答える