我在我的网站上有div,当我点击一个时,一个文本框会出现在那个div上。当我按下添加项按钮,应该保存文本,它给了我一个错误的addListItem函数:
未捕获的类型错误:无法读取未定义的属性(阅读“trim”)
以下是我在本案中的一些职能:
// Add a new list item
function addListItem(shapeId) {
const shape = $(`#${shapeId}`);
const shapeInfo = shape.data("info");
if (shapeInfo) {
const shapeInput = shape.find(".shape-input");
const newItem = shapeInput.val();
if (newItem.trim() !== "") {
if (!shapeInfo.items) {
shapeInfo.items = [];
}
shapeInfo.items.push(newItem);
shapeInput.val("");
populateShapeList(shape);
saveShapeData();
}
}
}
// Function to save shape data to local storage
function saveShapeData() {
const shapesData = [];
$(".shape").each(function() {
const shapeId = $(this).attr("id");
const shapeData = {
id: shapeId,
top: $(this).position().top,
left: $(this).position().left,
width: $(this).width(),
height: $(this).height(),
items: $(this).data("info") ? $(this).data("info").items : []
};
shapesData.push(shapeData);
});
localStorage.setItem("shapes", JSON.stringify(shapesData));
}
代码不完全是我的,据我所知,与修剪功能的一部分是试图决定是否输入是空的,但问题似乎出现在那里。如果我错了请纠正我,我不是Maven。
2条答案
按热度按时间62o28rlo1#
我认为问题是有时newItem得到未定义的,为什么你得到错误。只需检查一个条件,如if(newItem && newItem.trim()!==“”)这一次它将检查第一个newItem是否存在,然后只执行下一个。尝试更新的代码.我希望它会工作..
anauzrmj2#
下面的示例将生成一个随机形状并将其添加到本地存储中的形状中。
渲染时,将从本地存储中检索形状。
将代码分成模块化函数可能有助于可读性和可维护性。我创建了一个将形状对象转换为元素的函数,另一个函数则相反。