我是jquery空间的新手,希望通过Stackoverflow学到很多东西。
我有一个Sharepoint 2010列表数据项,它具有Choice数据类型,允许用户复选多个值。我使用SPService来获取列表项。以下是代码:
$().SPServices({
webURL: 'http://abc.def.com/Products',
operation: 'GetListItems',
listName: listName,
async: false,
CAMLQuery: query,
CAMLViewFields: fields,
CAMLRowLimit: 11,
completefunc:
function (xData, Status)
{ $(xData.responseXML).find("[nodeName=z:row]").each(function ()
{
$("#ProdList").val("-1");//Pre-filled with selected val.
var myProd= $(this).attr("ows_Prod"); //displays in this format ;#myProd1;#myProd2;#
//Here 1. i want to store myProd as an array.
2. eliminate ;#
3. store final array elements as myProd1, myProd2
4. Display myProd1
myProd2
in the dropdown list.
//
$("#ProdList").append('<option>' + myProd+ '</option>');
});
}
});
});
<body>
<select class="Dropdowns" id="ProdList">
<option value="-1">My ProdLists</option>
</select>
</body>
Any pointers? Thanks.
答案 0 :(得分:1)
要弄清楚问题的具体内容有点困难。我猜你的代码中的注释正在描述这个问题。下次,我建议您在文本中更详细地说明问题的详细信息,而不是代码。但是,考虑到这一点,我猜你正在尝试做什么。
你有一个如下所示的字符串:
";#myProd1;#myProd2;#"
并且,您希望将myProd1
和myProd2
放入数组中,然后从该数组添加到下拉列表中。
// get product list
var myProd = $(this).attr("ows_Prod");
// clean up the ends
myProd = myProd.replace(/^;#|;#$/g, "");
// split into pieces
var myProdArray = myProd.split(";#");
// add each piece as an option to the drop-down
for (var i = 0; i < myProdArray.length; i++) {
$("#ProdList").append('<option>' + myProdArray[i] + '</option>')
}
您可以使用以下字典顺序对数组进行排序:
myProdArray.sort();
您可以使用以下方法从已排序的数组中删除重复:
var noDupArray = [];
noDupArray.push(myProdArray[0]);
for (var i = 1; i < myProdArray.length; i++) {
if (myProdArray[i] != myProdArray[i-1]) {
noDupArray.push(myProdArray[i]);
}
}
因此,如果您想要排序和删除重复项,可以使用以下代码:
var myProd = $(this).attr("ows_Prod");
myProd = myProd.replace(/^;#|;#$/g, "");
var myProdArray = myProd.split(";#");
// sort
myProdArray.sort();
// remove dups
var noDupArray = [];
noDupArray.push(myProdArray[0]);
for (var i = 1; i < myProdArray.length; i++) {
if (myProdArray[i] != myProdArray[i-1]) {
noDupArray.push(myProdArray[i]);
}
}
// add each piece as an option to the drop-down
for (i = 0; i < noDupArray.length; i++) {
$("#ProdList").append('<option>' + noDupArray[i] + '</option>')
}