函数可以在控制台中工作,但不能在jQuery中工作

Function works in console but not jQuery

本文关键字:工作 但不能 jQuery 控制台 函数      更新时间:2023-09-26

我正在创建一个简单的二进制到十进制转换器页面,其中包含一个比较选项。我的二进制到十进制函数运行良好,jQuery可以运行并将其显示到DOM。我的compare函数在控制台中运行良好,但当jQuery单击函数调用时就不起作用了。Console.log在jQuery函数外使用完全相同的数字,但在函数内不使用。这是jsfiddle:https://jsfiddle.net/deniswells59/ekdtk60t/

//simple compare function
var result = "";
var assert_equal = function(bin, dec) {
    if(bin === dec){
       return result = ("They are Equal!");
    } else {
      return result = ("They aren't Equal!");
    };
 };
//this works fine as well as .binaryToDecimal(), which I didn't include
$("#convert").click(function(){
   var value = $("#binToConvert").val();
   var valueConverted = value.binaryToDecimal();
   $("#display").html("<span class='results'>"+value+"</span> converts to <span class='results'>"+valueConverted+"</span>");
});
//this ALWAYS displays "They aren't Equal!"; console.log says otherwise
$("#compare").click(function() {
   var binary =$("#binary").val();
   var decimal =$("#decimal").val();
   binary = binary.binaryToDecimal();
   assert_equal(binary, decimal);
   $("#display").html("<span class='results'>"+result+"</span>");
});

您需要确保它们是相同的类型。现在bin是一个数字,dec是一个字符串(因为jQuery的.val()总是返回一个字符串,即使用户输入了一个数字)。bin是一个数字,因为binaryToDecimal函数返回一个数字。

只需将decbin转换为相同的类型,然后在assert_equal函数中进行比较。否则,如果您不关心类型,则可以直接使用==

像这样的东西应该可以做到:

var assert_equal = function(bin, dec) {
    if(parseInt(bin) === parseInt(dec)){
    return result = ("They are Equal!");
  } else {
    return result = ("They aren't Equal!");
  };
};

您应该将函数添加到assert_equal中,如下所示

var assert_equal = function(bin, dec) {
  if(bin.binaryToDecimal() == dec)
    return result = ("They are Equal!");
}
相关文章: