我正在创建一个简单的二进制到十进制转换器页面,并提供一个比较选项。我的二进制到十进制函数工作正常,jQuery可以运行并显示给DOM。我的比较函数在控制台中工作正常但在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>");
});
答案 0 :(得分:1)
您需要确保它们属于同一类型。现在bin
是一个数字,dec
是一个字符串(因为jQuery的.val()
总是返回一个字符串,即使用户输入了一个数字)。 bin
是一个数字,因为您的binaryToDecimal
函数会返回一个数字。
只需将dec
和bin
转换为同一类型,然后再在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!");
};
};
答案 1 :(得分:0)
您应该将函数添加到assert_equal中,如下所示
docker ps -s -a