javascript - 使用 forEach 替换部分字符串?
问题描述
我有标有前缀“add-product-”的输入框 ID,我想用什么替换“add-product-”。所以我尝试使用data[field.id].replace("add-product-", "");
,但它给了我错误:[Error] TypeError: undefined is not an object (evaluating 'data[field.id].replace')
这是我的代码:
function addproduct(){
var datafeilds = Array.from(document.querySelectorAll("[id^='add-product-']"));
var data = {};
datafeilds.forEach(function(field){
data[field.id].replace("add-product-", "");
data[field.id] = field.value;
});
console.log(data);
}
输出是:
[Log] {add-product-name: "", add-product-overlay1: "", add-product-overlay2: "", add-product-wholesale_price: "", add-product-delivery_price: "", …}
我希望它是:
[Log] {name: "", overlay1: "", overlay2: "", wholesale_price: "", delivery_price: "", …}
解决方案
您可以replace
在再次添加到空 obj 之前使用。此外,您不需要Array.From
在您的datafeilds
as querySelectorAll中使用默认情况下返回nodes
数组中的所有内容。
运行下面的代码片段以查看它是否正常工作并全部替换。
function addproduct() {
var datafeilds = document.querySelectorAll("[id^='add-product-']")
var data = {};
datafeilds.forEach(function(field) {
//replace all add-products with ""
var replace = field.id.replace("add-product-", "");
//Push to data {}
data[replace] = field.value
});
console.log(data)
}
addproduct()
<input id='add-product-name' value="1" />
<input id='add-product-overlay1' value="1" />
<input id='add-product-overlay2' value="1" />
<input id='add-product-wholesale_price' value="1" />
<input id='add-product-delivery_price' value="1" />
推荐阅读
- angular - Vmware-clarity 和 Visual Studio 2017 Angular
- excel - Excel / VBA - 如何选择当前选定单元格所在列(相对)的第一行(绝对)?
- jquery - 使用带有隐藏列的 WebGrid Helper 时默认排序不起作用
- javascript - React.Children.only 期望接收带有组件的单个 React 元素子元素
- ios - iOS - 在不订阅键盘通知的情况下,定位视图设置与屏幕或键盘底部的距离(如果它正在显示)
- c# - 在 ASP.Net Core 2.0 中导出到 Excel
- mysql - laravel where 子句值和列名
- python-3.x - Python sum 和 numpy sum 给出不同的结果
- c# - 获取用户名客户端
- bash - 为什么这个 bash 脚本会产生错误?