Javascript 单击按钮时循环遍历数组
我有一个数组,通过json_encode()放入我的文件中;从我的.php文件。该数组如下所示:Javascript 单击按钮时循环遍历数组,javascript,php,html,arrays,json,Javascript,Php,Html,Arrays,Json,我有一个数组,通过json_encode()放入我的文件中;从我的.php文件。该数组如下所示: var obj = { "15800175": { "posID": "159469", "scanID": "22597", "anr": "15800175", "TVanr": "", "code": "G-09-27-2E", "ean": "4710069680575", "marke": "fox", "bez": "j
var obj = {
"15800175": {
"posID": "159469",
"scanID": "22597",
"anr": "15800175",
"TVanr": "",
"code": "G-09-27-2E",
"ean": "4710069680575",
"marke": "fox",
"bez": "jersey yellow",
"bez2": "size xl",
"menge": "1",
"ve": "St\u00fcck",
"Dimensionstext": "TT9857BG\r\n",
"Langtext": ""
},
"15100027": {
"posID": "159471",
"scanID": "22597",
"anr": "15100027",
"TVanr": "",
"code": "G-11-03-2A",
"ean": "4712511825411",
"marke": "fox",
"bez2": "jersey L",
"menge": "1",
"ve": "St\u00fcck",
"Dimensionstext": "blue\r\n",
"Langtext": ""
}
}
var arr = Object.keys(obj).map(key => obj[key]);
{
"15800175": {
“posID”:“159469”,
“scanID”:“22597”,
“anr”:“15800175”,
“TVanr”:“,
“代码”:“G-09-27-2E”,
“ean”:“4710069680575”,
“马克”:“狐狸”,
“bez”:“泽西黄”,
“bez2”:“尺寸xl”,
“梦阁”:“1”,
“ve”:“St\u00fcck”,
“Dimensionstext”:“TT9857BG\r\n”,
“语言文字”:”
},
"15100027": {
“posID”:“159471”,
“scanID”:“22597”,
“anr”:“15100027”,
“TVanr”:“,
“代码”:“G-11-03-2A”,
“ean”:“4712511825411”,
“马克”:“狐狸”,
“bez2”:“jersey L”,
“梦阁”:“1”,
“ve”:“St\u00fcck”,
“Dimensionstext”:“蓝色\r\n”,
“语言文字”:”
},
例如,我想在一个表中显示如下所示的值
Pos | code | bez | anr | qty | ve
我想让它先显示数组的第一个位置,它将等于15800175,对吗?然后当我按下“下一步”按钮时,它将切换divs,隐藏第一个位置并显示第二个位置的值
我如何做到这一点,一个按钮按下,以显示我的相应值?真的卡住了这个。
谢谢!在javascript中,afaik,“数组”和你所拥有的东西之间有一个区别,我们称之为“对象”。在PHP中,我想它们都被称为“数组”,当你有数组值的键时,它被称为“关联数组”,但在javascript中,我们称之为“对象”,以区别于那些没有关联的数组像
[1,2,3]
因此,第一步是将对象实际转换为数组。我会这样做:
var obj = {
"15800175": {
"posID": "159469",
"scanID": "22597",
"anr": "15800175",
"TVanr": "",
"code": "G-09-27-2E",
"ean": "4710069680575",
"marke": "fox",
"bez": "jersey yellow",
"bez2": "size xl",
"menge": "1",
"ve": "St\u00fcck",
"Dimensionstext": "TT9857BG\r\n",
"Langtext": ""
},
"15100027": {
"posID": "159471",
"scanID": "22597",
"anr": "15100027",
"TVanr": "",
"code": "G-11-03-2A",
"ean": "4712511825411",
"marke": "fox",
"bez2": "jersey L",
"menge": "1",
"ve": "St\u00fcck",
"Dimensionstext": "blue\r\n",
"Langtext": ""
}
}
var arr = Object.keys(obj).map(key => obj[key]);
结果是arr
看起来像:
[{"posID":"159471","scanID":"22597","anr":"15100027","TVanr":"","code":"G-11-03-2A","ean":"4712511825411","marke":"fox","bez2":"jersey L","menge":"1","ve":"Stück","Dimensionstext":"blue\r\n","Langtext":""},{"posID":"159469","scanID":"22597","anr":"15800175","TVanr":"","code":"G-09-27-2E","ean":"4710069680575","marke":"fox","bez":"jersey yellow","bez2":"size xl","menge":"1","ve":"Stück","Dimensionstext":"TT9857BG\r\n","Langtext":""}]
然后,您可以使用forEach回调对
arr
中的每个对象进行迭代,arr.forEach(item=>{});
并根据需要呈现它们。Hi使用@Tkol方法这里有一个解决方案,可以将元素1乘1附加到html表中
html:
var obj={
"15800175": {
“posID”:“159469”,
“scanID”:“22597”,
“anr”:“15800175”,
“TVanr”:“,
“代码”:“G-09-27-2E”,
“ean”:“4710069680575”,
“马克”:“狐狸”,
“bez”:“泽西黄”,
“bez2”:“尺寸xl”,
“梦阁”:“1”,
“ve”:“St\u00fcck”,
“Dimensionstext”:“TT9857BG\r\n”,
“语言文字”:”
},
"15100027": {
“posID”:“159471”,
“scanID”:“22597”,
“anr”:“15100027”,
“TVanr”:“,
“代码”:“G-11-03-2A”,
“ean”:“4712511825411”,
“马克”:“狐狸”,
“bez2”:“jersey L”,
“梦阁”:“1”,
“ve”:“St\u00fcck”,
“Dimensionstext”:“蓝色\r\n”,
“语言文字”:”
}
}
var计数器=0;
var arr=Object.keys(obj.map)(key=>obj[key]);
document.getElementById(“btnAdd”).onclick=函数(事件){
//变数
让tbody=document.getElementById(“tbodyExample”);
//逻辑
let element=arr[counter]!=未定义?arr[counter]:未定义;
如果(元素!==未定义){
var row=document.createElement('tr');/';
row.setAttribute(“id”,element.posID);
row.innerHTML=''+element.posID+''+element.code+''+(element.bez==undefined?element.bez2:element.bez)+''+element.anr+''+element.menge+''+element.ve+'';
tbody.appendChild(世界其他地区);
计数器++;
}否则{
警报(“未找到更多项目”);
}
}
表格示例
邮递
密码
贝兹
安尔
数量
ve
谢谢您的回复。但是,我如何一次只显示一个对象,并通过单击按钮来显示下一个对象呢?您有一些状态存储您打开的索引,然后当单击按钮时,将索引增加1,在该索引处获取对象,并渲染该对象。可能涉及模数计算,如果你遍历数组的长度,它将返回到索引0。谢谢!!这正是我要寻找的。现在我想在单击按钮时用第二个元素替换第一个元素,依此类推。另一个问题,当我单击下一个按钮时,它首先显示第二个键(“15100027”)而不是按常规顺序显示对象。我如何修复它?