为了账号安全,请及时绑定邮箱和手机立即绑定

使用 forEach 替换部分字符串?

使用 forEach 替换部分字符串?

POPMUISE 2022-12-09 15:40:32
我有标有前缀“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: "", …}
查看完整描述

2 回答

?
弑天下

TA贡献1818条经验 获得超8个赞

您可以replace在再次添加到空对象之前使用。您也不需要Array.From在您datafeildsquerySelectorAll中使用默认情况下返回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" />


查看完整回答
反对 回复 2022-12-09
?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

您的数据对象为空,因此访问其上的 field.id 属性将返回未定义。所以你得到了上面的错误。

关于前缀ID,您可以通过制作document.querySelectorAll("input[id^='prefixvalue']")


查看完整回答
反对 回复 2022-12-09
  • 2 回答
  • 0 关注
  • 117 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号