我有这样的file.csv:
名称,性别//标题
John,M
路中,M
杰西,F
我想用javascript计算总M和F,所以我试过这个:
<script type="text/javascript">
$(function () {
$("#upload").bind("click", function () {
var regex = /^([a-zA-Z0-9\s_\\.\-:])+(.csv|.txt)$/;
var F = 0;
var M = 0;
if (regex.test($("#fileUpload").val().toLowerCase())) {
if (typeof (FileReader) != "undefined") {
var reader = new FileReader();
reader.onload = function (e) {
var table = $("<table />");
var rows = e.target.result.split("\n");
for (var i = 0; i < rows.length; i++) {
var row = $("<tr />");
var cells = rows[i].split(",");
var gender = cells[1];
if (gender === "F"){
F++;
}else{
M++;
}
for (var j = 0; j < cells.length; j++) {
var cell = $("<td />");
cell.html(cells[j]);
row.append(cell);
}
table.append(row);
}
$("#dvCSV").html('');
$("#dvCSV").append(table);
window.alert(pos);
}
reader.readAsText($("#fileUpload")[0].files[0]);
}
});
});
</script>
但 var F&amp; M没有增加(只是增加到1并且不再增加),你能帮我解决这个问题吗? :(
答案 0 :(得分:1)
您发布的代码在末尾有一些缺少的括号,因此最初没有运行。 您应该检查并忽略空行,还要明确检查男性,以便不计算标题行。
对于每一行,如果性别在你的代码中是“M”的“F”,显然在末尾有一个额外的新行字符(字符代码13),尝试gender.length它将显示2.我们可以检查使用gender.charAt(0)==='F'(或'M')
我修改了代码并且它可以正常工作
<html>
<head>
<title>Test</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script type="text/javascript">
$(function () {
$("#upload").bind("click", function () {
var regex = /^([a-zA-Z0-9\s_\\.\-:])+(.csv|.txt)$/;
var F = 0;
var M = 0;
if (regex.test($("#fileUpload").val().toLowerCase())) {
if (typeof (FileReader) != "undefined") {
var reader = new FileReader();
reader.onload = function (e) {
var table = $("<table />");
var rows = e.target.result.split("\n");
for (var i = 0; i < rows.length; i++) {
if (rows[i].trim() != '') {
var row = $("<tr />");
var cells = rows[i].split(",");
var gender = cells[1];
if (gender.trim().charAt(0) === "F") {
F++;
} else if (gender.trim().charAt(0) === "M") {
M++;
}
for (var j = 0; j < cells.length; j++) {
var cell = $("<td />");
cell.html(cells[j]);
row.append(cell);
}
table.append(row);
}
}
$("#dvCSV").html('');
$("#dvCSV").append(table);
window.alert("F: " + F + ", M:" + M);
}
reader.readAsText($("#fileUpload")[0].files[0]);
}
}
});
});
</script>
</head>
<body>
<input type="file" id="fileUpload" />
<input type="button" id="upload" value="Upload" />
</body>
</html>