Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 单击按钮时循环遍历数组_Javascript_Php_Html_Arrays_Json - Fatal编程技术网

Javascript 单击按钮时循环遍历数组

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

我有一个数组,通过json_encode()放入我的文件中;从我的.php文件。该数组如下所示:

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”)而不是按常规顺序显示对象。我如何修复它?