以下是如何避免eval
并使您的代码更清晰和更明显,希望这有助于理解为什么您的代码如此错误以及为什么 IMO 您应该回到基础并按照评论中的建议从那里开始。您可以从MDN开始。
var units = {
milligram: 1000000,
carrat: 5000,
gram: 1000,
kilogram: 1,
ounce: 35.27399072294044,
pound: 2.2046244201837775,
stone: 0.157473,
ton: 0.001
};
var $input = $('#weight_value');
$('#weight_unit').change(function() {
var from = $input.data('unit'),
to = $(this).val(),
standard = $input.val() / units[ from ],
converted = standard * units[ to ];
$input.val( converted ).data('unit', to);
});
另请注意,我没有使用parseFloat
or parseInt
,我只是利用 JavaScript 的类型强制。
演示
:http: //jsfiddle.net/zeByX/30/