更新:我似乎只是通过添加
来修复它document.getElementById('fullName').focus();
NameSalaries.sort();
}
在主函数中。我无法相信它确实奏效了。但我认为这是因为我'拉链'主阵列。感谢大家的帮助!
好的,我正在尝试一种新方法。这样,员工每次都会动态添加一个新的表格单元格。然而,我所拥有的问题仍然存在。我需要结果在提交时对自己进行排序。名字和工资。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title> Table Entry </title>
</head>
<body>
<input type="text" id="fullName" value="" placeholder="Firstname"> :Enter employee name <br>
<input type="text" id="salary" value="" placeholder="Salary"> :Enter employee salary <br>
<input type="button" value="click me add to array" onclick="addToArray()"> <p> </p>
<table border="1" id="source" cellspacing="3" cellpadding="3">
<thead>
<tr> <th>Employee Name</th> <th>Employee Salary</th> </tr>
</thead>
<tbody id="sourceBody">
<tr><td> </td><td> </td></tr>
</tbody>
</table>
<script type="text/javascript">
var NameSalaries= [];
function addToArray() {
var fn = document.getElementById('fullName').value;
var sly = document.getElementById('salary').value;
var both = [fn,sly];
NameSalaries.push(both);
createBody(NameSalaries);
document.getElementById('fullName').focus();
}
function createBody(NS) {
var tarr = [];
for (var i=0; i<NS.length; i++) {
tarr.push('<tr><td>'+NS[i][0]+'</td><td>'+NS[i][1]+'</td></tr>');
} document.getElementById('sourceBody').innerHTML = tarr.join('');
}
</script>
</body>
</html>
答案 0 :(得分:1)
您可以使用单个对象加入薪水和名称。例如:
var joe = {
name: "joe schmoe",
salary: 1234
};
使用这种技术,您可以将两个数组“压缩”为一个:
var employees = [];
for(var i = 0; i < names.length && i < salaries.length; i++) {
employees.push({ // push appends to the end of the array
name: names[i],
salary: salaries[i]
});
}
您可以将函数传递给array.sort
,用于比较值。因此,如果您想根据员工姓名对employees
数组进行排序,可以使用<
和>
比较字符串进行字母顺序排列:
var alphabatizedEmployees = employees.sort(function(employee1, employee2) {
return employee1.name > employee2.name;
});
除了使用salary
密钥而不是name
密钥外,您可以基于工资进行排序:
var employeesSalarySorted = employees.sort(function(employee1, employee2) {
return employee1.salary > employee2.salary;
});
sort
返回一个新数组,因此不会对原始employees
数组进行排序。
我希望这会有所帮助。