0

billItems我有一个在我的 jquery 中调用的数组,并且有类似的值,

[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

您可以为此使用 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

注意@Rory McCrossan 关于 var validItem = false 的评论

还要确保您正在比较字符串与字符串或 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 回答
1

我将在这里冒险并猜测您的琴弦与它们看起来的不完全一样。尝试将比较更改为:

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

这将在比较之前从两个参数中删除任何尾随或前导空格。希望有帮助。

于 2012-05-28T14:09:56.117 回答