Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.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 我正在使用DOM生成一个下拉菜单,并用从API接收的数据填充选项_Javascript_Loops_Object_Dom_Local Storage - Fatal编程技术网

Javascript 我正在使用DOM生成一个下拉菜单,并用从API接收的数据填充选项

Javascript 我正在使用DOM生成一个下拉菜单,并用从API接收的数据填充选项,javascript,loops,object,dom,local-storage,Javascript,Loops,Object,Dom,Local Storage,我希望能够循环使用每个动态生成的选项(请参见图片左侧),并添加下面的代码,以便我可以继续单击“添加到购物车”,并更新每个选项中保存到localStorage的编号。 目前,下面的代码只是不断地向'num'添加1。因此,当我更改下拉选项时,“optionQuantity”值将在最后一个值停止的位置继续。但是,我希望每个下拉选项都有自己的“num”,并且能够在选项之间来回切换,并不断添加到购物车中。我在末尾加了一张图片,这样你就能明白我的意思了。谢谢你的帮助 let num

我希望能够循环使用每个动态生成的选项(请参见图片左侧),并添加下面的代码,以便我可以继续单击“添加到购物车”,并更新每个选项中保存到localStorage的编号。 目前,下面的代码只是不断地向'num'添加1。因此,当我更改下拉选项时,“optionQuantity”值将在最后一个值停止的位置继续。但是,我希望每个下拉选项都有自己的“num”,并且能够在选项之间来回切换,并不断添加到购物车中。我在末尾加了一张图片,这样你就能明白我的意思了。谢谢你的帮助

            let num = 0
            const addToCart = document.getElementById('addToCart')
            addToCart.addEventListener('click', function(option) {
                option.preventDefault();
    
                let cartObject = {
                    name: jsonResponse.name,
                    price: jsonResponse.price,
                    option: select.value,
                    optionQuantity: num
                }
                num++

                localStorage.setItem(select.value, JSON.stringify(cartObject));
            });
在下面,您可以看到左侧的选项选项(根据我返回的API,有不同数量的选项-它需要保持动态)。在右侧,您可以看到我是如何将对象转换为localStorage的,并且我希望能够根据我选择的选项继续添加到“optionQuantity”。

您应该从localStorage检索所选选项,并在内部操作“num”,而不共享var num的范围

大概是这样的:

//让num=0//删除此
const addToCart=document.getElementById('addToCart')
addToCart.addEventListener('click',函数(选项){
option.preventDefault();
让selectedItem=JSON.parse(localStorage.getItem(select.value));
//在这里声明num
设num=0;
如果(selectedItem){
num=selectedItem.num+1;
}
设cartObject={
名称:jsonResponse.name,
price:jsonResponse.price,
选项:select.value,
选项数量:选择editem.num+1;
}
setItem(select.value、JSON.stringify(cartObject));
});