Javascript 用数组的值替换DOM上的值
我有一个次优的解决方案,涉及遍历数组和替换Javascript 用数组的值替换DOM上的值,javascript,html,arrays,Javascript,Html,Arrays,我有一个次优的解决方案,涉及遍历数组和替换中的文本,这取决于是否找到了这些值。目前,重构提取此数据的逻辑不是一个选项,因此,它是这样的: 我有一个部门对象数组,可在页面加载时读取: [{id: 1, name: "Arts & Sciences"}, {id: 2, name: "Mathematics"}, {id: 3, name: "History"}] 我还有一个建筑对象数组 [{id: 50, name: "Building 50"}, {id: 62, name: "Bui
中的文本,这取决于是否找到了这些值。目前,重构提取此数据的逻辑不是一个选项,因此,它是这样的:
我有一个部门对象数组,可在页面加载时读取:
[{id: 1, name: "Arts & Sciences"}, {id: 2, name: "Mathematics"}, {id: 3, name: "History"}]
我还有一个建筑对象数组
[{id: 50, name: "Building 50"}, {id: 62, name: "Building 62"}, {id: 21, name: "Building 21"}]
在我的DOM上,我有一个填充了部门ID及其相应的建筑ID的表
<tr>
<td>1</td> // Arts & Sciences
<td>50</td> // Building 50
</tr>
<tr>
<td>2</td> // Mathematics
<td>62</td> // Building 62
</tr>
<tr>
<td>3</td> // History
<td>21</td> // Building 21
</tr>
1//艺术与科学
50//50号楼
2//数学
62//62号楼
3//历史
21//21号楼
我想知道是否有一种简单的方法来使用这两个可用的数组,我必须用这些数组的正确值替换表中的值
同样,我不能改变应用程序的流程来提取文本值,正如我所希望的那样
欢迎您的任何意见 如果你可以使用jQuery,试试这个(不知道如何翻译成纯js)
for(var i=0;i您可以使用for循环迭代数组,并访问table元素以覆盖它。此链接中给出了写入table单元格的内容:
结合这两种逻辑将是您的解决方案。有一个表格,第一列是部门,第二列是建筑,我将这样做:
function arrToObj(arr, key) {
var res = {};
for (var i = 0, a; a = arr[i]; i++) {
res[a[key]] = a;
}
return res;
}
var depsArr = [{id: 1, name: "Arts & Sciences"}, {id: 2, name: "Mathematics"}, {id: 3, name: "History"}];
var depsObj = arrToObj(depsArr, "id");
var buildsArr = [{id: 50, name: "Building 50"}, {id: 62, name: "Building 62"}, {id: 21, name: "Building 21"}];
var buildsObj = arrToObj(buildsArr, "id");
var tds = table.getElementsByTagName("td");
for (var i = 0, tdDep, tdBuild; (tdDep = tds[i]) && (tdBuild = tds[i+1]); i += 2) {
tdDep.textContent = depsObj[tdDep.textContent].name;
tdBuild.textContent = buildsObj[tdBuild.textContent].name;
}
我试图通过创建一个对象,然后循环表来最小化循环。这将有一个固定的表,其中有两列。Javascript方法
使用createElement
创建tr
和td
和appendChild
td到tr
,最后tr到表
var ar1=[{id:1,名称:“艺术与科学”},{id:2,名称:“数学”},{id:3,名称:“历史”}]
var ar2=[{id:50,名称:“50号楼”},{id:62,名称:“62号楼”},{id:21,名称:“21号楼”}]
var table=document.getElementById('表')
table.innerHTML=”“/*清除现有表*/
对于(var i=0;iYou的问题/被接受答案的比率非常低。当人们努力帮助你时,你应该开始接受问题的答案。如果你不这样做,你将得到更少的帮助,因为人们会注意到你不感谢那些试图帮助你的人。谢谢Jorge,我会更加积极主动地回答你的问题,请这样做我不认为我不感激这么多人
for (var i in array) {
// get access to td cell
// write into the cell
// access data using array[i]
}
function arrToObj(arr, key) {
var res = {};
for (var i = 0, a; a = arr[i]; i++) {
res[a[key]] = a;
}
return res;
}
var depsArr = [{id: 1, name: "Arts & Sciences"}, {id: 2, name: "Mathematics"}, {id: 3, name: "History"}];
var depsObj = arrToObj(depsArr, "id");
var buildsArr = [{id: 50, name: "Building 50"}, {id: 62, name: "Building 62"}, {id: 21, name: "Building 21"}];
var buildsObj = arrToObj(buildsArr, "id");
var tds = table.getElementsByTagName("td");
for (var i = 0, tdDep, tdBuild; (tdDep = tds[i]) && (tdBuild = tds[i+1]); i += 2) {
tdDep.textContent = depsObj[tdDep.textContent].name;
tdBuild.textContent = buildsObj[tdBuild.textContent].name;
}