首先我的头衔可能不是很好,所以我很乐意用任何建议更新它。
所以我的愿望是在一些javascript代码上实现DRY。从本质上讲,除了一行的一部分之外,还有三个函数(更多来的)完全相同。所以我的想法就是将它模块化,并在一个循环中执行一行。
因此,任何更改之前的代码行在三个不同的函数中看起来都是这样的:
...snip
function (prod_sku)
{
Page.getAttribute(UpdateFieldName).setValue(prod_sku.ProductName));
},
...snip 2
function (prod_sku)
{
Page.getAttribute(UpdateFieldName).setValue(prod_sku.ProductSKU));
},
...snip 3
function (prod_sku)
{
Page.getAttribute(UpdateFieldName).setValue(prod_sku.ProductQty));
},
因此,您可以看到唯一的差异是ProductName,ProductSKU,ProductQty。
所以我的想法是有一个调用,其中要更新的字段被传递,然后分成一个数组。
passed in as 'ProductName,ProductSKU,ProductQty,...' (UpdateFieldValue is the parm variable)
split into an array as var arrayUpFldVal = UpdateFieldValue.split(',');
然后遍历执行一行的数组,并连接数组val。
function (prod_sku)
{
Page.getAttribute(UpdateFieldName).setValue(prod_sku +'.' + arrayUpFldVal [index]));
},
只有你可能预测到它才会将对象转换为字符串表示以便能够连接。
[object Object].ProductNumber
那么如何获取我的字符串名称来表示一个对象...即。 prod_sku.ProductName
我可以做一系列if语句,但是......有点似乎打败了主要目标......确保它减少了很多重复的代码,但我希望有一个干净的解决方案。
if(arrayUpFldVal == 'ProductName')
{
Page.getAttribute(UpdateFieldName).setValue(prod_sku.ProductName));
}
所以任何输入都会受到赞赏
答案 0 :(得分:1)
你可以修改你的功能以包含一个新的" attr"参数:
function (prod_sku, attr)
{
Page.getAttribute(UpdateFieldName).setValue(prod_sku[attr]);
}