为什么我的if else条件在jquery中不起作用?

时间:2016-06-05 17:01:01

标签: jquery

我正在尝试为某些jquery脚本添加一个条件,但出于某种原因我无法使其工作。我希望有人可以告诉我我的错误。 我希望脚本在div中显示不同的文本,具体取决于通过ajax获取的变量的值。非常感谢。

我脚本的ajax位

$(document).ready(function() {

       //Fetch data from server

       $.ajax({
           url: 'my_data.php',
           dataType: "json",
           success: function(data) {

               $("#a").text(data.a);
               $("#b").text(data.b);

               var a = data.a;
               var b = data.b;


               //Condition
               if (a > b) {
                   $("#advice").text("a is greater than b");
               } else {
                   $("#advice").text("b is greater a.");
               }
           }

       });

2 个答案:

答案 0 :(得分:3)

尝试使用parseInt(a)

将变量解析为整数
$(document).ready(function() {

   //Fetch data from server

   $.ajax({
       url: 'my_data.php',
       dataType: "json",
       success: function(data) {

           $("#a").text(data.a);
           $("#b").text(data.b);

           var a = parseInt(data.a, 10);
           var b = parseInt(data.b, 10);


           //Condition
           if (a > b) {
               $("#advice").text("a is greater than b");
           } else {
               $("#advice").text("b is greater a.");
           }
       }

   });

答案 1 :(得分:1)

根据data.a和data.b的数据类型,如果它们不属于 number ,则可能会出现意外行为。

如果data.a和data.b是字符串,数组或对象类型,使用relational operators将导致可能不期望的行为,例如:

console.log('19' > '109'); // false
console.log([1,2] > [2,3,4]); // false
console.log({} > {1: 2}); // false

您可以使用parseFloat(data.a)或使用parseInt(data.a, 10)将int转换为float。 10是radix

要查看data.a和data.b的类型,请使用typeof关键字:

console.log(typeof data.a);
console.log(typeof data.b);

如果这些不是Number,则在使用关系运算符之前将它们转换为float或int。