gpt4 book ai didi

javascript - 输入元素找不到它的值

转载 作者:行者123 更新时间:2023-11-30 10:08:09 25 4
gpt4 key购买 nike

function makeUL() {

var products = JSON.parse(localStorage["products"]);

var list = document.createElement('ul');

for(var i = 0; i < products.length; i++) {
if(products[i].amount == 0) {
continue;
}
// Create the list item:
var item = document.createElement('li');

var product = products[i];

var totalPrice = product.amount * product.price;
var toDisplay = product.name + " " + product.amount + " @" + totalPrice + " ";

// Set its contents:
item.appendChild(document.createTextNode(toDisplay));
var inputbox = document.createElement("input");
inputbox.setAttribute("id", "inputboxProduct" + i);
inputbox.addEventListener("change", function(){
changeAmountProd(inputbox.id);
});
item.appendChild(inputbox);

// Add it to the list:
list.appendChild(item);
}

// Finally, return the constructed list:
return list;
}

当您将鼠标悬停在某个字符串上时,这基本上会生成一个列表。该列表将基于本地存储,并为该列表的每个点创建一个输入框。问题是添加事件监听器。出于某种原因,当该输入框的事件被触发时,它总是返回一个空值。

function changeAmountProd(inputboxId) {
var products = JSON.parse(localStorage["products"]);

value = document.getElementById(inputboxId).value;

if(value < 1) {
return;
}
products[i].amount = value;

localStorage["products"] = JSON.stringify(products);

makeUL();
}

最佳答案

问题出在您的change 事件的回调上。您指的是使用 inputbox 变量(可通过 closure 获得)更改的元素,但在调用回调时,inputbox 将始终指向最后生成的元素。

试试这个:

inputbox.addEventListener("change", function(){
changeAmountProd(this.id);
});

参见 addEventListener

关于javascript - 输入元素找不到它的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28063009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com