从.csv中提取的变量不会添加

时间:2014-07-07 21:02:27

标签: javascript jquery arrays csv

我在添加几个变量时遇到了一些麻烦。我没有尝试过任何解决问题的方法,而且我做了一些以前从未做过的事情让我想知道究竟是什么导致了这个问题。我有一个.csv文件,我需要通过它来查找我想要的行,从那里提取一些变量,将它们添加到一起,并在页面上显示所有这些。

这是我的代码:

<script src="jquery_min.js" type="text/javascript"></script>
<script src="jquery.csv-0.71.js" type="text/javascript"></script>
<script>

jQuery.get('fileName.csv', function(data) {
var csv = $.csv.toArrays(data);
var index, value, result, var1, var2, var3;
for (index=0; index < csv.length; ++index) {
    value = csv[index];

    if (value[3] === "1234") {
        window.var1 = parseFloat(value[5]);
        window.var2= parseFloat(value[6]);
        window.var3= var1 + var2;
        alert(var3);
        result = var3;
        break;
    }
}
});

</script>

这里是.csv文件的示例行:

&#34;纽约&#34;,&#34; A123&#34;,&#34; SMITH INC&#34;,&#34; 1234&#34;,&#34; JOHN SMITH&#34; ,4112237,5279 ,,&#34; Y&#34;

我正在写这个页面:

<script>
$('td#id1').html(var1);
$('td#id2').html(var2);
$('td.class1').html(var3);
</script>

警告弹出&#34;未定义&#34; var1和var 2正确写入页面,分别为4112237和5279。 Var3以NaN的形式写入页面。在这一点上,我已经尝试了太多的修复来回忆。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:3)

删除window.件事!这将访问全局对象的属性(也称为全局变量),但您的var1var2var3在本地声明 - 因此当您访问它们时仍然undefined(在警报调用或结果分配中)!

jQuery.get('fileName.csv', function(data) {
    var csv = $.csv.toArrays(data);
    var index, value, result, var1, var2, var3;
    for (index=0; index < csv.length; ++index) {
        value = csv[index];

        if (value[3] === "1234") {
            var1 = parseFloat(value[5]);
            var2 = parseFloat(value[6]);
            var3 = var1 + var2;
            alert(var3);
            result = var3;
            break;
        }
    }

    $('td#id1').html(var1);
    $('td#id2').html(var2);
    $('td.class1').html(var3);
});

如果下一个脚本应该读取这些全局变量,请查看How do I return the response from an asynchronous call?,也许可以查看Why is my variable unaltered after I modify it inside of a function? - Asynchronous code reference

答案 1 :(得分:0)

你的问题是你正在治疗&#34;价值&#34;就像一个带索引的数组。值仅包含来自csv [index]的值。像这样重构你的代码:

jQuery.get('fileName.csv', function(data) {
    var csv = $.csv.toArrays(data);
    var index, value, result, var1, var2, var3;
    for (index=0; index < csv.length; ++index) {
        value = csv[index];

        if (value === "1234") {
            var1 = parseFloat(csv[5]);
            var2 = parseFloat(csv[6]);
            var3 = var1 + var2;
            alert(var3);
            result = var3;
            break;
        }
    }
});