我是来自马其顿的Bobi,我偶然发现了一个丑陋的问题 我的JavaScript / jQuery代码。
我想在我的textarea中输入一些值,然后根据具体的公式 需要计算这些值,结果需要提醒。
这是我的代码......
//First this is my formula
function calc(data) {
ret = [];
for(var i = 0; i < data.length; i++) {
ret[i] = (3.5 + data[i] + 0.5 * (data[i] - 3));
}
return ret;
}
//Now, taking values from the text area using valHooks
$.valHooks.textarea = {
get: function(elem) {
return elem.value.replace( /\r?\n/g, "\r\n" );
}
};
$('button').click(function() {
//in this step the values are successfully taken from the textarea
var sample = {};
sample.data = $('textarea').val();
//alert(sample.data); <-- this works fine
var result = {};
result.data = calc(sample.data); //but here seems to be the problem
alert(result.data); //the alert shows some gibberish values
例如,如果我输入这些值1.6,3.9,3.3,4.0,2.5,2.8 ...... 警报需要显示这些计算值:4.4,7.85,6.95,9.0,5.75,6.2 ......
这里也是jsfiddle http://jsfiddle.net/Avramoski/skqG4/
我知道我错过了一些小事,但天知道它是什么...... 请帮忙! :(
答案 0 :(得分:0)
点击FIDDLE链接到演示结果。
您必须检查parseFloat号是否有效。
$(function () {
function calc(data) {
ret = [];
var res=data.split(',');
for(var i = 0; i < res.length; i++) {
var parseNumber=parseFloat(res[i]);
ret[i] = (3.5 + parseNumber + 0.5 * (parseNumber - 3)).toFixed(2);
}
return ret;
}
//Taking values from the text area using valHooks
$.valHooks.textarea = {
get: function(elem) {
return elem.value.replace( /\r?\n/g, "\r\n" );
}
};
$('button').click(function() {
var result = {};
result.data = calc(sample.data);
alert(result.data);
});
});
答案 1 :(得分:0)
按照我的说法进行以下三项更改..并享受编码.. :)
function calc(data) {
ret = [];
for(var i = 0; i < data.length; i++) {
data[i] = parseFloat(data[i]); // here u want to parse ur string to float
ret[i] = (3.5 + data[i] + 0.5 * (data[i] - 3));
ret[i] = Math.round(ret[i] * 100) / 100; // this code for get rounded answer like exactly u needed
}
return ret;
}
$.valHooks.textarea = {
get: function(elem) {
return elem.value.replace( /\r?\n/g, "\r\n" );
}
};
$('button').click(function() {
var sample = {};
sample.data = $('textarea').val();
sample.data = sample.data.split(","); //textarea value transferring to array
//alert(sample.data);
var result = {};
result.data = calc(sample.data);
alert(result.data);
} // and dont miss this curly bracket :D